我正在编写一个iOS应用程序,我正在使用Parse在服务器端存储数据。
我有用户,每个用户都可以拥有一辆车。
我正在试图弄清楚如何编写一个查询,让我可以让所有拥有年份小于2000且具有特定颜色的汽车的用户(假设为红色)。
每辆车都与用户有关系,每个用户也与他们的汽车有关系。
用户< - >汽车(一对一)
我开始使用PFQuery:
PFQuery * userQuery = [PFQuery queryWithClassName:@"User"];
我不确定如何处理查询中的关系。所以,我几乎不确定如何完成这件事。
有什么建议吗?
答案 0 :(得分:6)
首先,User
类是一种特殊情况,在查询中使用它时需要执行此操作:
PFQuery *query = [PFUser query];
接下来,构造所需查询的方式取决于指针的位置。如果用户具有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
}
}];
如果Car
类具有user
属性,您只需执行常规查询并添加以下行以便访问完整的User
对象:
[carQuery includeKey:@"user"];
答案 1 :(得分:1)
你的桌子是什么样的?如果您在Car表中将User作为列,则只需查询汽车表中年份小于2000的汽车,然后您只需访问该查询的User属性即可。它看起来像这样:
PFQuery *carQuery = [PFQuery queryWithClassName:@"Car"];
[carQuery whereKey:@"year" lessThan:@(2000)];
[carQuery includeKey:@"user"];
[carQuery findObjectsInBackgroundWithBlock:^(NSArray *cars, NSError *error) {
if (!error) {
for (Car *car in cars) {
User *user = car@["user"];
}
}
}];