保存和加载 UITableView 数组 - iOS Swift Parse
Posted
技术标签:
【中文标题】保存和加载 UITableView 数组 - iOS Swift Parse【英文标题】:Saving and loading UITableView array - iOS Swift Parse 【发布时间】:2015-09-02 22:37:11 【问题描述】:我有以下内容;它从 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
弄清楚它,但可以确定它是如何完成的。任何帮助将不胜感激!
【问题讨论】:
findObjectsInBackgroundWithBlock 是一种同步方法,因此您必须作为查询数据的连接。你想做什么 我希望你的意思是asynchronous
@Lamar
【参考方案1】:
而不是严格关注Local Datastore
,这不是一件坏事。我只是觉得您使用它仅仅是因为您想访问该数据,例如当用户处于飞行模式时,或者当网络状况不佳时。如果是这种情况,那么您可以利用 Parse 的内置缓存系统。 PFQuery
缓存默认设置为忽略缓存。这意味着,从服务器传入的任何信息都不会存储在用户硬盘上的临时文件夹中(正是您要查找的内容)。因此,您必须使用one of their many caching policies 明确告诉要在设备上缓存的对象
对你来说,这会很好:
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
,因为您已经知道它是一个数组,并且通常不会将任何不是类的东西大写。它使阅读更容易
【讨论】:
非常感谢。你说得对,我对 localdatastore 很感兴趣,在查看文档时,它似乎不适合这个目的。感谢您的提示...大约 10 年前我就被教导过,从此忘记了要遵循的约定!它确实使它更漂亮 太棒了@Tom 这是 Stack Overflow 的礼仪,可以接受解决您问题中任何未决问题的答案。如果这确实有帮助,请通过选择旁边的复选标记来接受答案。 meta.stackexchange.com/a/5235我不是很在意,但其他努力赚取声望的用户希望得到表扬。此外,它还让遇到相同问题的其他用户知道答案是他们应该在自己的项目中实施的正确答案,并减少相同主题的重复问题。 完成。感谢您的解释 - 感谢您的帮助和耐心!以上是关于保存和加载 UITableView 数组 - iOS Swift Parse的主要内容,如果未能解决你的问题,请参考以下文章