我有2个类:PFUser和Groups。在"群组" class I我有我的所有组,每个组都有一个名为" Members"的关系键。 "成员"保存与当前组相关的用户列表。
如何查询"会员"键,以便返回一个用户数组?
我过去为用户相关关系做了类似的查询,但后来我只是将PFRelation * friendsRelation = [PFUser currentUser] objectForKey:@" friendsRelation"]传递给查询。
这次不能让它发挥作用。
我最接近的是:
PFQuery *query = [PFQuery queryWithClassName:@"Groups"];
[query whereKey:@"Members" equalTo:[PFUser currentUser]];
[query orderByAscending:@"username"];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {…}
P.S。每个用户都将他的组(PFObject)添加为密钥。
答案 0 :(得分:1)
如何为自定义类执行PFRelation查询:
//1. Get objectID for object from custom class. Previously added as a key for user.
PFObject *currentGroup = [[PFUser currentUser] objectForKey:@"Group"];
//2. Set relation key for which to do the query.
PFRelation *relation = [currentGroup relationForKey:@"Members"];
PFQuery *membersQuery = [relation query];
//Do the query!
[membersQuery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {}];
无需定义要执行查询的类。 ObjectID是唯一的。
希望这会对某人有所帮助。
答案 1 :(得分:0)
如果我理解你的问题,你想在同一个«Group»中拥有一系列«Members»。
您的查询与“团体”类有关,而应该是“会员”。你不应该寻找«members»等于[PFUser currentUser],因为在最好的情况下它总是只返回一个项目:PFUser与你的iPhone / iPad链接。
如果您的用户有一个组密钥(让我们将其命名为«OwnerGroup»),那么您可以尝试:
PFQuery *membersQuery = [PFQuery queryWithClassName:@"Members"];
[membersQuery whereKey:@"OwnerGroup" equalTo:currentGroup];
[membersQuery orderByAscending:@"username"];
[membersQuery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {…}