2015-06-11 1 views
0

Я использую этот запрос, чтобы найти пользователей, он работает, но он просто показывает мне первого пользователя. Я хочу, чтобы он показал мне пользователя с текстом UITextField. Как я могу это сделать? (у меня есть текстовое поле и там введите имя, а затем он должен показать разобранные пользователей с именем)Запрос PFUser не работает

PFQuery *query = [PFUser query]; 

NSArray *users = [query findObjects]; 

userQuerys.text = users[0][@"username"]; 

Большое спасибо

ответ

0

Этот код загрузит вам все PFUser сек, в котором username равно name параметра:

- (void)searchUsersNamed:(NSString *)name withCompletion:(void (^)(NSArray *users))completionBlock { 
    PFQuery *query = [PFUser query]; 
    [query whereKey:@"username" equalTo:name]; 
    [query findObjectsInBackgroundWithBlock:^(NSArray *users, NSError *error) { 
     if (!error) { 
      // we found users with that username 
      // run the completion block with the users. 
      // making sure the completion block exists 
      if (completionBlock) { 
       completionBlock(users); 
      } 
     } else { 
      // log details of the failure 
      NSLog(@"Error: %@ %@", error, [error description]); 
     } 
    }]; 
} 

пример, если вам необходимо обновить пользовательский интерфейс с результатом, например, таблицы:

- (void)someMethod { 
    // we will grab a weak reference of self to perform 
    // work inside the completion block 
    __weak ThisViewController *weakSelf = self; 
    //replace ThisViewController with the correct self class 

    [self searchUsersNamed:@"Phillipp" withCompletion:^(NSArray *users) { 
     //perform non-UI related logic here. 
     //set the found users inside the array used by the 
     //tableView datasource. again, just an example. 
     weakSelf.users = users; 
     [[NSOperationQueue mainQueue] addOperationWithBlock:^{ 
      //pefrorm any UI updates only 
      //for example, update a table 
      [weakSelf.tableView reloadData]; 
     }]; 
    }]; 
} 

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

Избегайте использования логики, не связанной с UI, с помощью этого метода mainQueue, вы можете заблокировать основной поток и это плохой пользовательский интерфейс.

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

  • Нет связанных вопросов^_^