2014-02-23 49 views
0

我打電話給一個- (void)textViewDidChange:(UITextView *)textView委託,其中的代碼從我的parse.com後端獲取數據。但99/100嘗試我得到一個空數組,在極少數情況下,它會返回確切的數據,並將其列在tableview.Any重新定義我的代碼的最佳方式?或使用任何其他代表?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開始獲取數據,您可以顯示UIActivityIndi​​cator以阻止UI,直到搜索結果加載到tableview中。 – zaheer

+0

我想要一個搜索欄的概念,所以你的建議離不開上下文!用戶開始輸入後立即查詢結果! – KhanXc