2015-08-14 3 views
0

У меня есть две таблицы TrendingUsers и Follow. Необходимая функциональность подобна извлечению пользователей из таблицы TrendingUsers и предлагает следовать, если выбранный пользователь не входит в список пользователей. Если пользователь уже прошел, то пропустите.iOS-parse framework вложенный запрос

Follow стол с колонками follower и leader.

PFQuery *followTableQuery = [PFQuery queryWithClassName:@"Follow"]; 
[followTableQuery whereKey:@"follower" equalTo:[PFUser currentUser] ]; 
[followTableQuery whereKey:@"leader" equalTo:@"fetchedUserObject" ]; 
[followTableQuery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { 
    if (!error) { 
     if (objects.count) { 
      //if following objects array will have single object 
     } 
     else 
     { 
      //not following to @"fetchedUserObject" user 
     } 

    } 
    } 
]; 

Это подтвердит мне, что currentUser следит за @"fetchedUserObject" пользователя или нет. Теперь я хочу интегрировать это в запрос таблицы TrendingUsers для извлечения только таких пользователей, что currentUser не следует.

ответ

2

Вы можете просто использовать вложенные запросы, документы из Parse обычно являются хорошей отправной точкой. Вот пример кода, из того, что я понял из вашего вопроса, это должно сделать трюк.

//This is our current user 
PFUser *user = [PFUser currentUser]; 

//The first query, querying for all the follow objects from the current user 
PFQuery *followingQuery = [PFQuery queryWithClassName:@"Follow"]; 
[followingQuery whereKey:@"follower" equalTo:user]; 

//Now we query for the actual trending users, but we do not want the query to return the users (who are in the @"leader" key) that have been found by the first query 
PFQuery *trendingQuery = [PFQuery queryWithClassName:@"TrendingUsers"]; 
[trendingQuery whereKey:@"objectId" notEqualTo:user.objectId]; //don't return the current user 
[trendingQuery whereKey:@"objectId" doesNotMatchKey:@"leader" inQuery:followingQuery]; //I'm supposing that @"leader" is containing the objectId of the specific user that is part of the follow object with the current user 
[trendingQuery setLimit:1000]; 
[trendingQuery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) 
{ 
    //... 
}]; 

я, возможно, не понял вашу структуру данных полностью, поэтому вы можете обменять один или несколько ключей в коде выше, но в основном, это то, как вы могли бы сделать это.

+0

безупречный..обзор для же! – preetam