解析iOS如何通过相关PFObject中找到的属性查询对象?

zum*_*zum 3 ios parse-platform pfquery

我正在编写一个iOS应用程序,我正在使用Parse在服务器端存储数据.

我有用户,每个用户都可以有一辆车.

我试图弄清楚如何编写一个查询,允许我让所有用户拥有年份小于2000且具有特定颜色的汽车(假设为红色).

每辆车都与用户有关系,每个用户也与他们的汽车有关系.

用户< - >车(一对一)

我开始使用PFQuery:

PFQuery * userQuery = [PFQuery queryWithClassName:@"User"];
Run Code Online (Sandbox Code Playgroud)

我不知道如何处理查询中的关系.所以,我几乎不确定如何完成这项工作.

有什么建议吗?

Tim*_*ers 6

首先,User该类是一个特例,在查询中使用它时需要执行此操作:

PFQuery *query = [PFUser query];
Run Code Online (Sandbox Code Playgroud)

接下来,构造所需查询的方式取决于指针的位置.如果用户具有car指向该属性的属性,Car那么查询将如下所示:

PFQuery *userQuery = [PFUser query];

PFQuery *carQuery = [PFQuery queryWithClassName:@"Car"];
[carQuery whereKey:@"year" lessThan:@(2000)];
[carQuery whereKey:@"color" equalTo:@"red"];

[userQuery whereKey:@"car" matchesQuery:carQuery];
[userQuery includeKey:@"car"]

[userQuery findObjectsInBackgroundWithBlock:^(NSArray *users, NSError *error) {
    for (PFObject *user in users) {
        PFObject *car = user[@"car"];
        // read user/car properties as needed
    }
}];
Run Code Online (Sandbox Code Playgroud)

如果Car该类具有user属性,则只需执行常规查询并添加以下行以允许您访问完整User对象:

[carQuery includeKey:@"user"];
Run Code Online (Sandbox Code Playgroud)