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

时间:2015-12-04 20:38:14

标签: ios objective-c parse-platform

问题是我希望获得所有objectIDs,并且我希望最小化服务器和iOS应用之间的数据传输。所以,让我们说我在PARSE上有成千上万的PFObjects,它们会被更新和删除,我的应用程序需要在不使用推送通知的情况下更新其关于PARSE上存在的对象的知识(我正在处理这样的用户不允许的情况)。每次我的UIViewController呈现数据,检索PFObjects' ID并开始检查我的本地存储(不是PARSE本地数据存储,不同的)是否具有此类ID时,我不能只加载所有PFObject,因为{{ 1}}它们本身很大并且有很多它们,但是我可以加载所有PFObjects。那么,怎么做呢,它有可能吗?

objectIds PFQuery的一些方法非常有用,但似乎没有这样的方法。

2 个答案:

答案 0 :(得分:1)

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

并保存最近更新的日期 在第一个通过updatedAt:

解析set order对象的请求中
[query orderByDescending:@"updatedAt"];//orderByDescending

对于任何未来查询设置大于: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];

}

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

答案 1 :(得分:0)

您无法仅针对objectId查询Parse DB。你必须拉动整个PFObject,然后循环并存储id并丢弃其余的。

或者,我认为您可以从您感兴趣的对象和用户创建PFRelation来跟踪这些对象。