Ios 如何使用parse添加两个PFquery数据的对象?
我有两个查询,一个是friendsrequestQuery,另一个是user query我想在从用户查询中获取数据时,将friendsrequestQuery详细信息的所有数据添加到用户查询中Ios 如何使用parse添加两个PFquery数据的对象?,ios,parse-platform,pfquery,Ios,Parse Platform,Pfquery,我有两个查询,一个是friendsrequestQuery,另一个是user query我想在从用户查询中获取数据时,将friendsrequestQuery详细信息的所有数据添加到用户查询中 NSPredicate *predicate12=[NSPredicate predicateWithFormat:@"((UserFriendId == %@ )AND (UserId!=%@)) OR ((UserFriendId != %@ )AND (UserId==%@)) ",@"Nwk44a
NSPredicate *predicate12=[NSPredicate predicateWithFormat:@"((UserFriendId == %@ )AND (UserId!=%@)) OR ((UserFriendId != %@ )AND (UserId==%@)) ",@"Nwk44aeSrz",@"Nwk44aeSrz",@"Nwk44aeSrz",@"Nwk44aeSrz"];
PFQuery *innerQuery = [PFQuery queryWithClassName:@"FriendsDetails" predicate:predicate12];
[innerQuery whereKey:@"BlockStatus" equalTo:@"No"];
PFQuery * userQuery = [PFUser query];
[userQuery whereKey:@"objectId" matchesKey:@"UserFriendId" inQuery:innerQuery];
[userQuery whereKey:@"objectId" matchesKey:@"UserId" inQuery:innerQuery];
[userQuery whereKey:@"objectId" notEqualTo:@"Nwk44aeSrz"];
我要解释的是,我需要的是,在innerquery表中,我有10列,但我需要这些特定列的数据ConversationID、lastmessage、lastdate,同时重新服务用户查询的数据。
现在我得到的是userquery的详细信息,而不是innerquery的详细信息,所以我需要Innerquerydetails的详细信息。
请帮帮我。我认为您最好存储指针而不是Id,这样您也可以包含这些数据 我不会使用谓词,我意识到您的查询使用谓词更干净,但我认为使用谓词更容易看到逻辑。您可以自己将其转换回谓词
// get your user
PFUser * userForQuery; // set up your user for the query, if it's current user, = [PFUser currentUser];
// first part of predicate
PFQuery * innerQueryA = [PFQuery queryWithClassName:@"FriendsDetails"];
[innerQueryA whereKey:@"UserFriend" equalTo:userForQuery]; // from @"UserFriendId"
[innerQueryA whereKey:@"User" notEqualTo:userForQuery]; // from @"UserId"
// second part of predicate
PFQuery * innerQueryB = [PFQuery queryWithClassName:@"FriendsDetails"];
[innerQueryB whereKey:@"userFriend" notEqualTo:userForQuery]; // from @"UserFriendId"
[innerQueryB whereKey:@"user" equalTo:userForQuery]; // from @"UserId"
// combine
PFQuery * query = [PFQuery orQueryWithSubqueries:@[innerQueryA, innerQueryB]];
[query whereKey:@"BlockStatus" equalTo:@"No"];
// Now, as you remember, we are storing a pointer in @"User" as opposed to an id @"UserId" as you had it. Because of
// this, we will use parse's includeKey: feature.
[query includeKey:@"User"]; // tells the query to include the data associated with these keys;
NSMutableArray * usersRetrieved = [[NSMutableArray alloc]init];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (!error) {
// objects will contain all of your objects
for (PFObject * object in objects) {
[usersRetrieved addObject:object[@"User"]]; // all the data should be available for the @"User" object
}
// objects will contain all the @"friendDetails" objects
// usersRetrieved will contain all the @"User" objects
}
else {
}
}];
我意识到这会稍微改变您的数据结构,但它会为您提供所需的所有数据