繁体   English   中英

保存和加载UITableView数组 - iOS Swift Parse

[英]Saving and loading UITableView array - iOS Swift Parse

我有以下几点; 它从Parse后端获取数据并将类实例加载到NSArray以插入UITableView

var ObjectIDClass = PFQuery(className: "TestObject")

ObjectIDClass.findObjectsInBackgroundWithBlock({
  (ObjectsArray : [AnyObject]?, error: NSError?) -> Void in

  var ObjectIDs = ObjectsArray as! [PFObject]
  for i in 0...ObjectIDs.count-1 {
    self.iDArray.append(ObjectIDs[i].valueForKey("objectId") as! String)
    self.NameArray.append(ObjectIDs[i].valueForKey("PDFName") as! String)
    self.tableView.reloadData()
  }
})

这仅适用于网络连接,一旦应用程序关闭,然后在没有网络的情况下重新打开,表格就是空白。 我的目标是将数据存储在Local Datastore ,如果没有连接,则从Local Datastore加载。 我无法用pin ,但确定它是如何完成的。 任何帮助将非常感谢!

而不是严格关注Local Datastore ,这不是一件坏事。 我只是觉得你正在使用它只是因为你想要访问这些数据,例如当用户处于飞行模式时,或者当网络条件很低时。 如果是这种情况,那么您可以利用Parse的内置缓存系统。 默认情况下, PFQuery缓存设置为忽略缓存。 这意味着,从服务器传入的信息都不会存储在用户硬盘上的临时文件夹中(正是您要查找的内容)。 因此,您必须使用其众多缓存策略之一明确告知对象在设备上缓存

对你来说,这将是好的:

query.cachePolicy = .CacheElseNetwork
// Results were successfully found, looking first on the
// disk and then on network.
query.findObjectsInBackgroundWithBlock {

您可以使用以下选项查看其他缓存方式: https//www.parse.com/docs/ios/guide#queries-caching-queries

小方注意,请不要大写你的变量。 它没有遵循正确的命名约定。 ObjectIdDClass某种程度上应该类似于你要对它的类做什么,所以它应该被称为query或其他东西。 ObjectsArray应该是objects因为你已经知道它是一个数组,并且通常不会将任何非类的东西大写。 它使阅读更容易

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM