关于UISearchBar:predicateWithFormat的textDidChange

时间:2013-03-08 07:55:55

标签: iphone ios objective-c nspredicate uisearchbardelegate

我有一个问题,我不知道为什么方法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);
}

LOG:

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);
}

LOG:

filteredArray:(

)

1 个答案:

答案 0 :(得分:2)

textDidChange 告诉代表用户更改了搜索文本UISearchBarDelegate的委托方法,只要在搜索栏中更改文字就会调用它,我不会我认为第二种方法会获得价值,因为自动触发委托方法意味着你没有调用它们,也不能创建具有相同名称的多个委托方法。你可以为此目的声明一些自定义方法。

谓词中的问题?会引用usage of NSPredicate