为什么 PFRelation 不支持 fromLocalDataStore 查询?

Why PFRelation does not support fromLocalDataStore queries?

我有一个 PFUser 对象,其中有几个 PFRelation 指向其他对象。当我运行下面的代码:

PFRelation *relation = [[PFUser currentUser] relationForKey:@"Relation"];
PFQuery *query = [relation query];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error){
    NSLog(@"%@", objects);
}];

它工作正常。但是,当我想从本地数据存储执行相同操作时:

PFRelation *relation = [[PFUser currentUser] relationForKey:@"Relation"];
PFQuery *query = [[relation query] fromLocalDataStore]; // !!!
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error){
    NSLog(@"%@", objects);
}];

它 returns 什么都没有,尽管我已经用 [myObject pinInBackground].

固定了我的用户和相关对象

为什么PFRelation查询不支持fromLocalDataStore?我做错了什么?

我为这个问题创建了一个 bug report

escalated to the engineering team to investigate further

看来这是一个错误

与此同时,我已将所有 PFRelations 转换为指向相关 PFObject 的指针数组。不像 PFRelation 那样花哨,但可以很好地处理本地数据存储。

更新:在 Parse SDK v.1.7.3

中解析 solved the issue

这是一个解析错误。也可以是reproduced with Android SDK。我不确定 iOS,但在 Android 我找到了让它工作的方法。

您需要 "related" class 中的 PointerRelation 中的 ParseObject

在你的例子中,你有一个 PFUser,它有几个 PFRelation。如果您在 "related" classes 中将 PFPointer 添加到 PFUser,则从本地数据存储区查询就可以正常工作。

或者对于我上面 link 的情况 - 如果 Comment class 会有 PointerPost class 一切会很好。

在 parse 1.7.5 中有同样的问题(发行说明提到他们修复了这个错误,但仍然对我不起作用)

您可以通过对每个固定对象的关系执行单独的查询来使其工作(也许有一种方法可以同时对所有对象执行此操作?)。然后固定关系查询的结果。

之后,从本地数据存储的查询开始正常工作。