【问题标题】:swift parse how to save objects in local datastore and show them?快速解析如何在本地数据存储中保存对象并显示它们?
【发布时间】:2023-03-14 15:43:02
【问题描述】:

我启用了local datastore in app delegate,我进行了查询,但是如果有no internet,我如何保存这些对象以查看它们?

这是我的查询:

query.findObjectsInBackgroundWithBlock {
         (objects, error) -> Void in
         if error == nil && objects != nil
         {
            self.messages = objects!
            for object in objects! {
               inboxphotos.append(object.objectForKey("photo") as! PFFile)
               inboxusers.append(object.objectForKey("username") as! String) }
          }
}

现在我如何通过local query 来查看这个objects

【问题讨论】:

  • 你可以调用PFObject的saveInBackgroundWithBlock方法将其保存到本地数据库,记住本地数据库必须在AppDelegate中启用。要检索数据,请创建 PFQuery 对象并调用 findObjectsInBackgroundWithBlock 方法。
  • @SuryakantSharma 我什么时候应该调用 saveInBackgroundWithBlock?在 findObjectsInBackgroundWithBlock 里面还是什么时候?
  • 不! findObjectsInBackgroundWithBlock 用于使用PFQuery 从 Parse DB 中获取对象,saveInBackgroundWithBlock 用于保存。
  • @SuryakantSharma 你能回答我的问题并给我看一个简单的代码来获取带有查询的用户名并将其保存然后在没有互联网的情况下也显示在单元格上吗?
  • 先告诉我,你卡在哪里了,到目前为止你做了什么?

标签: swift parse-platform pfquery


【解决方案1】:

在致电findObjectsInBackgroundWithBlock之前,

query.fromLocalDatastore()

这将强制您的查询从 localDataStore 中提取。您的代码应如下所示:

query.fromLocalDatastore()
query.findObjectsInBackgroundWithBlock {
         (objects, error) -> Void in
         if error == nil && objects != nil
         {
            self.messages = objects!
            for object in objects! {
               inboxphotos.append(object.objectForKey("photo") as! PFFile)
               inboxusers.append(object.objectForKey("username") as! String) }
          }
}

为了在本地保存对象,您必须首先启用localDataStore:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    Parse.enableLocalDatastore()
    Parse.setApplicationId("parseAppId", clientKey: "parseClientKey")
  }
}

使用localDataStore 保存对象的推荐方法是使用saveEventually

myObject.saveEventually()

您也可以使用.pinInBackground() 将对象“永久”保存在localDataStore 中。固定对象可确保在您再次从服务器获取本地对象时自动更新它们。是实现服务器数据离线缓存的理想方式。

【讨论】:

  • 谢谢你,我这样做了,但我没有得到任何结果,因为本地数据存储是空的,你能编辑你的答案并如何在本地数据存储中保存对象吗?
猜你喜欢
  • 2015-02-27
  • 1970-01-01
  • 2016-01-04
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 2021-09-22
  • 1970-01-01
  • 2015-12-17
相关资源
最近更新 更多