我正在尝试更新PFObjects
的数组。根据我的理解,fetchAll()
(在其异步派生中)是更新所有对象的正确方法,因为fetchAllIfNeeded()
只会更新尚未与其关联的数据的PFObjects
。但是,每次执行fetchAll()
时,无论是否进行了任何更改,都会再次下载PFObjects
的完整列表。例如,如果我有一个帖子列表,并且我想检查是否对帖子进行了任何编辑,则无论如何都将下载所有帖子(文本,图片等),无论如何一篇文章的文本是否只是编辑过,或者是否有任何编辑。下载PFObject
的一个属性的文本并下载它们的整个数组(包括图片等)的数据消耗有很大差异,因此我想找到一种只下载更改的方法。这可能吗?
此外,如果可以,有没有办法可以获得需要更新的PFObjects
列表?即,如果第4和第12个帖子需要更新20个数组,我怎么知道呢?
感谢。
答案 0 :(得分:1)
fetchAll就像它的名字所暗示的那样 - 取出所有对象。您可以对updatedAt列使用PFQuery来检索自特定日期/时间以来已更新的对象。您需要在本地跟踪上次更新日期/时间,例如使用NSUserDefaults -
let query=PFQuery.queryWithclassName("MyClass")
let defaults=NSUserDefaults.standardUserDefaults()
if let lastUpdateDate=defaults.objectForKey("lastUpdateDate") as? NSDate {
q.whereKey("updatedAt",greaterThan:lastUpdateDate)
}
q.findObjectsInBackgroundWithBlock({(objects:[AnyObject]!, error: NSError!) in
if(error == nil) {
defaults.setObject(NSDate(),forKey:"lastUpdateDate")
for object in objects {
...
}
} else {
//Do something with error
}
})