【问题标题】:Why PFRelation does not support fromLocalDataStore queries?为什么 PFRelation 不支持 fromLocalDataStore 查询?
【发布时间】:2015-05-09 22:16:04
【问题描述】:

我有一个 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);
}];

尽管我已经用[myObject pinInBackground] 固定了我的用户和相关对象,但它什么也没返回。

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

【问题讨论】:

  • 关系中的对象是否设置了 ACL? LDS 不支持 ACL,但是,使用 SDK 的 v1.6.4,您可以告诉 LDS 查询忽略 ACL。
  • 我目前不确定 SDK 是否会自动从关系中固定对象,除非您为获取对象所做的查询具有 include:@"relationField ”。您是刚刚固定了父对象还是将获取的对象与关系分开?
  • 我正在分别固定相关对象
  • 如果有人感兴趣,我最终将我所有的 PFRelation 对象转换为指向相关 PFObjects 的指针数组。

标签: ios parse-platform pfrelation


【解决方案1】:

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

上报给工程团队进一步调查

所以看起来这是一个错误

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

更新:在 Parse SDK v.1.7.3 中解析 solved the issue

【讨论】:

    【解决方案2】:

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

    您需要在具有Relations 的ParseObject 的“相关”类中拥有一个Pointer

    在您的情况下,您有一个 PFUser,其中有几个 PFRelations。如果您在“相关”类中将PFPointer 添加到您的PFUser,则从本地数据存储区查询就可以了。

    或者对于我上面链接中的情况 - 如果 Comment 类将有一个 Pointer 到一个 Post 类,那么一切都会正常工作。

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2023-03-03
        • 2011-07-06
        • 2021-11-08
        • 2021-12-12
        • 1970-01-01
        • 2020-06-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多