仅从 Parse 中获取不同的数据
Fetching only different data from Parse
我正在尝试更新 PFObjects
的数组。根据我的理解,fetchAll()
(在其异步派生中)是更新所有对象的正确方法,因为 fetchAllIfNeeded()
只会更新尚未关联数据的 PFObjects
。但是,每次执行 fetchAll()
时,都会再次下载 PFObjects
的整个列表,无论是否进行了任何更改。例如,如果我有一个 post 的列表,并且我想检查是否对 post 进行了任何编辑,在每种情况下,它们中的所有 post完整的(文本、图片等)将被下载,无论一个 post 的文本是否被简单地编辑,或者即使根本没有任何编辑。下载一个 PFObject
的一个属性的文本和下载整个数组,其中很多包括图片,在数据消耗上有很大的不同,所以我想找到一种只下载更改的方法。这可能吗?
此外,如果可能的话,有没有办法获得需要更新的 PFObjects
的列表?即,如果 posts 4 和 12 需要从 20 的数组中更新,我怎么知道呢?
谢谢。
fetchAll 顾名思义 - 获取所有对象。您可以对 updatedAt 列使用 PFQuery 来检索自某个 date/time 以来已更新的对象。您需要在本地跟踪上次更新 date/time,例如使用 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
}
})
我正在尝试更新 PFObjects
的数组。根据我的理解,fetchAll()
(在其异步派生中)是更新所有对象的正确方法,因为 fetchAllIfNeeded()
只会更新尚未关联数据的 PFObjects
。但是,每次执行 fetchAll()
时,都会再次下载 PFObjects
的整个列表,无论是否进行了任何更改。例如,如果我有一个 post 的列表,并且我想检查是否对 post 进行了任何编辑,在每种情况下,它们中的所有 post完整的(文本、图片等)将被下载,无论一个 post 的文本是否被简单地编辑,或者即使根本没有任何编辑。下载一个 PFObject
的一个属性的文本和下载整个数组,其中很多包括图片,在数据消耗上有很大的不同,所以我想找到一种只下载更改的方法。这可能吗?
此外,如果可能的话,有没有办法获得需要更新的 PFObjects
的列表?即,如果 posts 4 和 12 需要从 20 的数组中更新,我怎么知道呢?
谢谢。
fetchAll 顾名思义 - 获取所有对象。您可以对 updatedAt 列使用 PFQuery 来检索自某个 date/time 以来已更新的对象。您需要在本地跟踪上次更新 date/time,例如使用 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
}
})