我有一个从Parse服务器提取数据的搜索栏。我注意到有时tableView将在我输入时显示同一单元格的两倍。
如果我继续键入它,那么它将只显示其中一个单元格。我注意到如果我慢慢输入,只有一个单元显示整个时间(应该如此)。也许Parse查询返回得太快,tableView无法正确重新加载?
你们可以解决这个问题的任何亮点将不胜感激!谢谢!
修改
- (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)
在更改文本字段值时使数组为零。我的意思是每次你键入它来调用一个函数,你会得到排序的值数组。所以在打电话之前让它为零。因为它还存储来自先前搜索的数据,这就是为什么两次获得相同数据的原因。我有同样的问题,我花了很多时间才弄明白:D