2015-02-02 6 views
0

구문 분석 서버에서 데이터를 가져 오는 검색 창을 가지고 있습니다. 나는 타이핑하는 동안 때때로 tableView가 같은 셀의 두 배를 표시한다는 것을 알아 챘다.searchResultsTableView는 두 개의 동일한 셀을 표시합니다.

enter image description here

내가 만 셀 중 하나가 표시됩니다를 계속 입력하면

enter image description here. 나는 내가 천천히 타이핑하면 하나의 셀만이 전체 시간을 표시한다는 것을 알아 차렸다. 아마도 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

plz 검색 코드를 공유하십시오 –

+0

내 게시물을 내 filterContentForSearchText로 업데이트했습니다. 보고 싶은 것이 있습니까? @ PallaviLigade –

답변

0

을 사용하면 텍스트 필드의 값을 변경하는 동안 전무 배열을 확인합니다. 여러분이 정렬 된 값의 배열을 얻을 함수를 호출 할 때마다 그 말을하는 것이 좋습니다. 그래서 그것을 호출하기 전에 그것을 무효로 만듭니다. 이전 검색의 데이터도 저장되므로 동일한 데이터를 두 번 가져 오는 것입니다. 나는이 똑같은 문제를 안고 있었고, 이것을 알아 내는데 지옥이왔다. D

+0

내 코드는 블록의 시작 부분에서 배열을 지우지 만 문제는 계속 지속됩니다./ –

+0

하나의 특정 이름이나 다른 모든 이름과 함께 일이 진행되고 있습니까? 특정 이름이있는 경우 가져올 데이터에 "Joe Smith"라는 이름이 두 번 포함되어 있기 때문에 가능할 수도 있습니다. – Rahul

+0

모든 단일 이름에서 발생합니다. –