2

这是我正在尝试做的一个例子。我将当前用户作为 PFUser,在另一个名为 Item 的类上,我有一个名为“owners”的关系,它是 PFUser 的关系。我想查询在关系中有当前用户的所有 Item 实例。

我看到了相反查询方式的示例,但我没有看到如何获取关系然后将其过滤到关系上的 PFUser 匹配项。这是一个例子。

https://www.parse.com/questions/inverse-relationship-support

PFObject teacher = ... // 类“Teacher”的PFObject PFRelation studentsRelation = [teacher relationforKey:@"students"]; PFQuery *query = studentsRelation.query; [查询 findObjectsInBackground:...

对于我的例子,我会这样做......

PFObject item = [PFObject objectWithClassName:@"Item"];
PFRelation relation = [parseObject relationforKey:@"owner"]; // Filter to PFUser? 
[query findObjectsInBackground:...

我可以使用 whereKey,但是我用什么?我匹配 objectId 吗?

[query whereKey:@"objectId" equalTo:user.objectId];

我不断收到错误 102:RelatedTo 运算符需要一个有效的指针。我的猜测是,因为我从一个空对象开始,所以它没有起点。带有教师的示例必须以填充的实例开始。我唯一填充的是PFUser。必须有一种方法来查询 Item 实例并根据它对当前用户拥有的“所有者”关系对其进行过滤。我无法弄清楚,也没有找到如何进行此查询的示例。

这个问题也在 Parse.com 上:https ://parse.com/questions/how-do-i-query-using-pfrelation-when-i-just-have-pfuser

4

1 回答 1

9

您可以whereKey:equalTo:在关系列上使用并将其传递给PFObject. 然后,此查询将返回与其关系Teacher中具有 this 的所有对象:student"students"

PFQuery *query = [PFQuery queryWithClassName:@"Teacher"]; [query whereKey:@"students" equalTo:student];

在此示例中,student是 a PFObject,其 className 与 中的关系匹配"students"。如果这是PFUsers 的关系并且您正在寻找当前用户的"Teacher"s,您将使用:

PFQuery *query = [PFQuery queryWithClassName:@"Teacher"]; [query whereKey:@"students" equalTo:[PFUser currentUser]];

这个答案也发布在 Parse 的社区论坛上:https ://parse.com/questions/how-do-i-query-using-pfrelation-when-i-just-have-pfuser

于 2013-06-27T00:05:20.190 回答