2015-03-09 2 views
0

У меня есть приложение, где пользователи пишут мнения, и только их друзья могут увидеть их в сроки и прокомментировать (В UITableViewController подкласса под названием «OpTimelineTableViewController»). Но у меня есть опрос о том, как правильно выполнить этот запрос ограничения, даже если раньше я пробовал решения, но не получал больше результатов ... (я начинаю вводить вашу модель данных):Запросы допрос PFUser и ограничение дружбы

Таблица «Пользователь» (это встроенный класс предоставляемого Parse)

"Мнение" таблица:

ObjectId;

senderId; Указатель Таблица пользователей

содержание; Строка

updatedAt; (предоставляется по умолчанию)

createdAt; (Предоставляется по умолчанию)

"Друзья" таблица:

friendId1 = Указатель таблицы пользователя

friendId2 = Указатель таблицы пользователя

статус = Строка, который может принимать «Подтвердить», «Ожидание» или «Отклонено»

updatedAt = (предоставляется по умолчанию)

createdAt = (предоставляется по умолчанию)

Теперь это главные важные части кода, которые я пытался:

- (void)loadOpinions { 

    PFQuery *opinionQuery = [PFQuery queryWithClassName:@"Opinion"]; 
    [opinionQuery orderByDescending:@"createdAt"]; 

    [opinionQuery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { 

     if (!error) { 

// Array declared as property in the ".h" that contains Opinion objects 

      self.opinionArray = [[NSArray alloc] initWithArray:objects]; 
     } 

     [self.tableView reloadData]; 
     [self.refreshControl endRefreshing]; 
    }]; 
} 

#pragma mark - Table view data source 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 

    return 1; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 

    return self.opinionArray.count; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    OpinionTimelineCell *opCell = [tableView dequeueReusableCellWithIdentifier:@"OpTimelineCell" forIndexPath:indexPath]; 

// self.tempOpObj is an instance of PFObject declared in the ".h" that contains opinion object (for the appropriate index) contained in the opinionArray 

    self.tempOpObj = [self.opinionArray objectAtIndex:indexPath.row]; 

// Now I query "User" table to retrieve all users that have posted Opinions: 

    PFQuery *UserOpinionQuery = [PFUser query]; 

// I do a restriction between users that are contained in the "Opinion" table: 

    [UserOpinionQuery whereKey:@"objectId" equalTo:[[self.tempOpObj objectForKey:@"senderId"]objectId]]; 

    [UserOpinionQuery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { 

     if (!error) { 

// "userOpInfo" is an instance of PFUser declared in the ".h" that contains the last of object retrieved in "objects": 

      self.userOpInfo = [objects lastObject]; 

      opCell.opinionUsername.text = self.userOpInfo.username; 
      } 
     }]; 

    opCell.opinionContent.text = [self.tempOpObj objectForKey:@"content"]; 

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    dateFormatter.dateFormat = @"mm-DD-yyyy"; 
    opCell.opinionDate.text = [dateFormatter stringFromDate:self.tempOpObj.createdAt]; 

    [opCell setSelectionStyle:UITableViewCellSelectionStyleNone]; 

// ? Query to restrict visible Opinion posts only if users are a current user friend: 

    PFQuery *restrictFriendQuery = [PFQuery queryWithClassName:@"Friends"]; 
    [restrictFriendQuery whereKey:@"friendId1" equalTo:[PFUser currentUser]]; 
    [restrictFriendQuery whereKey:@"friendId2" equalTo:[self.userOpInfo objectId]]; 
    [restrictFriendQuery whereKey:@"status" equalTo:@"Confirm"]; 

// Is that way the best ?? 

    [restrictFriendQuery findObjects]; 

    return opCell; 
} 

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

(Примечание: Я точен, что я реализовал метод [self.performSelector (loadOpinions) ....... в viewDidLoad для информации)

Мой код не кажется, ясно, что я» m all Ok, вот почему я не нашел простой способ сделать это

Может кто-нибудь помочь в том, как это исправить?

ответ

0

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

Посредством этого вы сможете получить запрос от текущего пользователя, который содержит всех своих друзей. Это можно использовать с запросом в «Мнениях», чтобы ограничить результаты теми строками, созданными другом пользователя.

+0

Должен ли я создать столбец массива «друг» в таблице «Пользователь», который содержит все друзья пользователя? – Lkm

+0

Да, вот что я сделал бы – Wain

Смежные вопросы