0

我有一个问题,我不知道为什么方法2无法获得价值?

方法一:可以获得价值!

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

方法二:无法取值!

-(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的代理方法,每当在搜索栏中更改文本时都会调用它,我认为第二种方法不会获得价值,因为自动触发代理方法意味着您没有调用它们并且您不能创建多个具有相同名称的委托方法。您可以为此目的声明一些自定义方法。

谓词有问题?将参考NSPredicate 的用法

于 2013-03-08T09:21:25.697 回答