2011-06-18 8 views
1

ユーザーが検索を行い、述部がnilを返す場合、「レコードが見つかりません」という警告をポップしようとしています。検索述語がnilを返した場合にUIAlertをポップしようとしています

私はこれを試しましたが、アラートが呼び出されることはありません。私は空のテーブルビューを取得します。

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar { 

    if (self.sBar.text != nil){ 

     NSPredicate *template = [NSPredicate predicateWithFormat:@"name contains[cd] $SEARCH OR optionOne contains[cd] $SEARCH OR optionTwo contains[cd] $SEARCH"]; 
     NSDictionary *replace = [NSDictionary dictionaryWithObject:self.sBar.text forKey:@"SEARCH"]; 
     NSPredicate *predicate = [template predicateWithSubstitutionVariables:replace]; 

     [fetchedResultsController.fetchRequest setPredicate:predicate]; 

    } 

    [[fetchedResultsController fetchedObjects] count]; 

    if (fetchedResultsController.fetchedObjects != nil) { 

     //do nothing 

    } else { 

     //display alert 
      UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:@"No records match." 
                  delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
      [alert show]; 
      [alert release]; 

    } 

    NSError *error = nil; 
    if (![[self fetchedResultsController] performFetch:&error]) { 

     // Handle error 
     NSLog(@"Unresolved error %@, %@", error, [error userInfo]); 
     abort(); // Fail 
    }   

    [self.myTable reloadData]; 

    [sBar resignFirstResponder]; 

} 
+0

新しいコードで更新されました – RyeMAC3

答えて

0

ハハ!それを得ました...

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar { 

    if (self.sBar.text != nil) { 

     NSPredicate *template = [NSPredicate predicateWithFormat:@"name contains[cd] $SEARCH OR optionOne contains[cd] $SEARCH OR optionTwo contains[cd] $SEARCH"]; 
     NSDictionary *replace = [NSDictionary dictionaryWithObject:self.sBar.text forKey:@"SEARCH"]; 
     NSPredicate *predicate = [template predicateWithSubstitutionVariables:replace]; 

     [fetchedResultsController.fetchRequest setPredicate:predicate]; 

    } 

    NSError *error = nil; 
    if (![[self fetchedResultsController] performFetch:&error]) { 

     // Handle error 
     NSLog(@"Unresolved error %@, %@", error, [error userInfo]); 
     exit(-1); // Fail 
    } 

    if ([[fetchedResultsController fetchedObjects] count] != 0) { 

     [self.myTable reloadData]; 
     [sBar resignFirstResponder]; 

    } 
    else { 

     //display alert 
      UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:@"No records match." 
                  delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
      [alert show]; 
      [alert release]; 

    } 
} 
0

述部には-countがありません。述語is an expression that evaluates to true or false。それでおしまい。

あなたがNSFetchedResultsControllerを求めることができ、その(配列を返します)、およびその-countのためにその配列を聞いていますが、-performFetch:を起動した後にのみこれを行うことができ-fetchedObjects

+0

... fetchedObjects countが追加されましたが、まだ何もありません。 – RyeMAC3

+0

@ RyeMAC3あなたは 'performFetch:'をまずやりましたか? –

関連する問題