0

質問があります。方法2で値を取得できない理由がわかりません。

方法1:価値を得ることができます!

-(void) searchBar:(UISearchBar *) searchBar textDidChange:(NSString *)searchText{

    NSString *firstName = @"55566666666";

    AllMainEventRows3 = [AllMainEventRows mutableCopy];

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF contains[cd] %@",firstName];
    NSArray *filteredArray = [AllMainEventRows3 filteredArrayUsingPredicate:predicate];
    NSLog(@"filteredArray: %@", filteredArray);
}

ログ:

filteredArray: (
        {
        JoinSuccess = 55566666666;
        bmabout = "";
        bmaddr = "\U53f0\U5317\U5e02\U9752\U5cf6\U6771\U8def99\U865f10F-6";
})

方法2:価値を得ることができない!

-(void) searchBar:(UISearchBar *) searchBar textDidChange:(NSString *)searchText{

    AllMainEventRows3 = [AllMainEventRows mutableCopy];

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF contains[cd] %@",searchText];
    NSArray *filteredArray = [AllMainEventRows3 filteredArrayUsingPredicate:predicate];
    NSLog(@"filteredArray: %@", filteredArray);
}

ログ:

filteredArray:(

)
4

1 に答える 1

2

textDidChange ユーザーが検索テキストを変更したことをデリゲートに通知します。これはUISearchBarDelegateのデリゲートメソッドであり、検索バー内でテキストが変更されるたびに呼び出されます。デリゲートメソッドは自動的に起動されるため、呼び出していないことを意味するため、2番目のメソッドは値を取得しないと思います。それらと同じ名前で複数のデリゲートメソッドを作成することはできません。その目的のためにいくつかのカスタムメソッドを宣言することができます。

述語の問題?NSPredicateの使用法を参照します

于 2013-03-08T09:21:25.697 に答える