2014-02-23 1 views
0

나는 - (void)textViewDidChange:(UITextView *)textView 델리게이트를 호출하고 코드 안에 내 parse.com 백엔드의 데이터를 가져옵니다. 하지만 99/100 시도는 빈 배열을 얻는 경우가 드물지만 정확한 데이터를 돌려주고 tableview에 나열합니다. 코드를 재정의하는 가장 좋은 방법은 무엇입니까? 다른 대의원을 사용 하시겠습니까?UITextView textViewDidChange-UISearch와 같은 백엔드에서 데이터 가져 오기

- (void)textViewDidChange:(UITextView *)textView 

    { 

    [searchAskerArray removeAllObjects]; 

    [searchResultArray removeAllObjects]; 
    NSString *inComingText = _txtQuestion.text; 
    if(![inComingText isEqualToString:@" "] && inComingText.length>4 && [[inComingText componentsSeparatedByString:@" "] count]>0) 
    { 
      PFQuery *searchQuery = [PFQuery queryWithClassName:@"Questions"]; 
      _txtQuestion.text = inComingText; 
      [searchQuery includeKey:@"user"]; 

     [searchQuery whereKey:@"question" containsString:_txtQuestion.text]; 

    [searchQuery findObjectsInBackgroundWithBlock:^(NSArray *quesArray, NSError *error) 
    { 

     for (int i = 0; i <quesArray.count; i++) 
     { 
      NSString *ques = [quesArray[i] objectForKey:@"question"]; 
      PFUser *asker = [quesArray[i] objectForKey:@"user"]; 
      [searchResultArray addObject:ques]; 
      [searchAskerArray addObject:asker.username]; 
     } 
     if (searchResultArray!=nil && searchAskerArray.count >0) 
     { 
      finalQuesArray = searchResultArray; 
      finalAskerArray = searchAskerArray; 
      [_similarTable reloadData]; 

     } 
    }]; 
}} 

사용자가 빠르게 입력 할 때이 대리인은 한 번에 많은 이벤트를 발생시킵니다. 제안 사항이 있습니까?

답변

0

검색 쿼리를 백그라운드로 실행하면 잠시 기다렸다가 블록 포인트를 배치하거나 NSLog를 사용하여 응답을 볼 수 있습니다.

+0

또는 가져 오기가 완료되면 테이블보기를 다시로드하는 코드를 어떻게 다시 정의합니까? – KhanXc

+0

검색 버튼을 누를 때 parse.com에서 데이터를 가져 오기 시작하면 검색 결과가 tableview에로드 될 때까지 UI를 차단하는 UIActivityIndicator를 표시 할 수 있습니다. – zaheer

+0

나는 당신의 제안이 문맥에서 나간다 그래야 수색 막대 개념 같이 싶다! 사용자가 타이핑을 시작하자마자 결과를 조회하십시오! – KhanXc