2015-02-02 3 views
0

У меня есть панель поиска, которая извлекает данные с сервера Parse. Я заметил, что иногда tableView будет отображать двойную ячейку одной ячейки во время ввода.searchResultsTableView отображает две одинаковые ячейки

enter image description here enter image description here

Если я продолжаю набирать его будет отображать только одну из ячеек. Я заметил, что если я печатаю медленно, только одна ячейка отображает все время (как и должно). Возможно, запросы Parse возвращаются слишком быстро для правильной перезагрузки tableView?

Любой свет, который вы, ребята, можете пролить на эту проблему, будет очень благодарен! Спасибо!

EDIT

- (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope 
{ 
[self.searchResult removeAllObjects]; 
[self.queryArray removeAllObjects]; 

NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"name contains[c] %@", searchText]; 

PFQuery *query = [PFUser query]; 
[query whereKey:@"fullName" containsString:searchText]; 
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { 
    if (!error) { 
     for (PFObject *pfObj in objects) 
     { 
      NSDictionary *person = [[NSDictionary alloc] 
            initWithObjects:@[pfObj[@"fullName"], pfObj.objectId] 
            forKeys:@[@"name", @"objectId"]]; 
      [self.queryArray addObject:person]; 
     } 

     self.searchResult = [NSMutableArray arrayWithArray: [self.contacts filteredArrayUsingPredicate:resultPredicate]]; 
     [self.searchResult addObjectsFromArray:self.queryArray]; 
     NSLog(@"query array %@", self.queryArray); 
     NSLog(@"%@", self.searchResult); 
     [self.searchDisplayController.searchResultsTableView reloadData]; 
    } else { 
     NSLog(@"%@", error); 
    } 
}]; 
[self.searchDisplayController.searchResultsTableView reloadData]; 
} 
+0

Вы делаете два отдельных массива для поиска? –

+0

PLZ поделитесь поисковым кодом –

+0

Я обновил сообщение с моим фильтромContentForSearchText. Есть что-нибудь еще, что вы хотели бы увидеть? @PallaviLigade –

ответ

0

Сделайте свой массив ноль в то время как вы изменяете текстовое поле Value. Я хочу сказать каждый раз, когда вы вводите его, чтобы вызвать функцию, в которой вы получите отсортированный массив значений. Поэтому, прежде чем звонить, сделайте его нулевым. Потому что он хранит данные из предыдущего поиска, и поэтому вы получаете одинаковые данные дважды. У меня была такая же проблема, и мне было чертовски понять это: D

+0

Мой код очищает массивы в начале блока, но проблема все еще сохраняется:/ –

+0

Это просто происходит с одним конкретным именем или с любым другим именем ?. Если это с конкретным именем, возможно, это потому, что данные, которые вы получаете, содержат имя «Джо Смит» дважды – Rahul

+0

Это происходит с каждым именем –

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