仅从Parse中获取不同的数据

时间:2015-11-02 02:26:12

标签: ios swift parse-platform fetch

我正在尝试更新PFObjects的数组。根据我的理解,fetchAll()(在其异步派生中)是更新所有对象的正确方法,因为fetchAllIfNeeded()只会更新尚未与其关联的数据的PFObjects。但是,每次执行fetchAll()时,无论是否进行了任何更改,都会再次下载PFObjects的完整列表。例如,如果我有一个帖子列表,并且我想检查是否对帖子进行了任何编辑,则无论如何都将下载所有帖子(文本,图片等),无论如何一篇文章的文本是否只是编辑过,或者是否有任何编辑。下载PFObject的一个属性的文本并下载它们的整个数组(包括图片等)的数据消耗有很大差异,因此我想找到一种只下载更改的方法。这可能吗?

此外,如果可以,有没有办法可以获得需要更新的PFObjects列表?即,如果第4和第12个帖子需要更新20个数组,我怎么知道呢?

感谢。

1 个答案:

答案 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
        }
})