ios - 获取 PARSE objectIds 数组而不检索 PFObjects 本身

标签 ios objective-c parse-platform

问题是我想获取所有的 objectIDs 并且我想尽量减少服务器和 iOS 应用程序之间的数据传输。所以,假设我在 PARSE 上有成千上万的 PFObjects,它们被更新和删除,我的应用程序需要在不使用推送通知的情况下更新其关于 PARSE 上存在哪些对象的知识(当用户不允许时,我正在处理这种情况他们)。我不能在每次我的 UIViewController 呈现数据时加载所有 PFObjects,检索 PFObjects' id 并开始检查我的本地存储(不是 PARSE Local Datastore,不同的存储)有这样的 id,因为 PFObjects 本身很大而且有很多,但我可以只加载所有 objectIds。那么,如何做到这一点,这有可能吗?

PFQuery 的某些方法,如 getAllObjectIds 会很有帮助,但似乎没有这样的方法。

最佳答案

您可以解决添加和更新的情况,但对于删除更容易使用直接的解决方案并定期请求所有对象。 这是更新/添加对象案例的解决方案:

并保存最近更新的日期 在第一个通过updatedAt解析set order对象的请求中:

[query orderByDescending:@"updatedAt"];//orderByDescending

对于任何 future 的查询设置 greaterThan:mostRecentUpdatedAt 以仅获取更新和添加的对象:

if ([[NSUserDefaults standardUserDefaults] objectForKey:@"mostRecentUpdatedAt"]){
    NSDate* mostRecentUpdatedAt = [[NSUserDefaults standardUserDefaults] objectForKey:@"mostRecentUpdatedAt"];

    [query whereKey:@"updatedAt" greaterThan:mostRecentUpdatedAt];
}

保存 mostRecentUpdatedAt 以备将来查询:

if (results.count) {

    PFObject* firtObj = [results firstObject];
    NSDate* mostRecentUpdatedAt =  firtObj.updatedAt;
    [[NSUserDefaults standardUserDefaults] setObject:mostRecentUpdatedAt forKey:@"mostRecentUpdatedAt"];
    [[NSUserDefaults standardUserDefaults] synchronize];

}

对于删除案例,您需要一个请求来计算数量或对象并与您的计数进行比较。这应该在检查添加/更新后立即完成,因为在这种情况下,如果计数不匹配,则存在删除情况。然后再次获取所有对象(没有魔法可以识别已删除的对象,因为它已经删除了!!)。

关于ios - 获取 PARSE objectIds 数组而不检索 PFObjects 本身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34097009/

相关文章:

ios - RSS 在页面上获取图像

ios - 在真实设备上未授予访问照片库的权限

ios - swift : How to get Inverse relationship in Parse. com

javascript - iOS getUserMedia 的 Bowser 未定义

android - Titanium:在 commonjs 模块中需要一个模块

ios - NSMergeConflict with newVersion = <deleted>

objective-c - 从我的 cocoa 应用程序将文件附加到 Mail.app 中的空白电子邮件

ios - 哪种是创建自定义标签栏 Controller 的最佳方法?

ssl - 无法为 parse.com 创建 SSL 证书

android - 从 Parse.com 检索数据到 ArrayList<Object>