ios - 当我使用 NSPredicate 为我的 UITableView 过滤我的数组时,应用程序崩溃

标签 ios objective-c nsmutablearray nsdictionary nspredicate

我正在使用 NSPredicatetableView 中搜索记录。
下面是我已经实现的代码。

-(void)updateSearchArray:(NSString *)searchText {
    if(searchText.length==0) {
        isFilter=NO;
    } else {
        isFilter=YES;
        filteredUsers = [[NSMutableArray alloc]init];
        NSPredicate *resultPredicate;
        resultPredicate = [NSPredicate predicateWithFormat:@"displayname contains[c] %@", searchText];
        NSLog(@"%@",[tableData valueForKey:@"displayname"]);
        filteredUsers = [[tableData valueForKey:@"displayname"] filteredArrayUsingPredicate:resultPredicate];
        [self.tblMemberList reloadData];

    }
}  

我的表数据:

Printing description of self->tableData:
<__NSArrayI 0x28116ba60>(
{
    displayname = Mihir;
    email = "ozam@abc.com";
    uuid = "user-97ae136";
},
{
    displayname = OzaMihir;
    email = "om@abc.com";
    uuid = "user-0c97f16";
}
)  

当我使用上面的代码时,我的应用程序崩溃了。

Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[ valueForUndefinedKey:]: this class is not key value coding-compliant for the key displayname.'

提前致谢。

最佳答案

你的 tableData 包含字典数组,所以在这里搜索直接在数组而不是字符串中发生,所以像这样使用

    isFilter=YES;
    filteredUsers = [[NSMutableArray alloc]init];
   filteredUsers = [tableData filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"(displayname contains[c] %@)", searchText]];
    [self.tblMemberList reloadData];

代替

NSPredicate *resultPredicate;
    resultPredicate = [NSPredicate predicateWithFormat:@"displayname contains[c] %@", searchText];
    NSLog(@"%@",[tableData valueForKey:@"displayname"]);
    filteredUsers = [[tableData valueForKey:@"displayname"] filteredArrayUsingPredicate:resultPredicate];

关于ios - 当我使用 NSPredicate 为我的 UITableView 过滤我的数组时,应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59876441/

相关文章:

ios - IOS 中的正字连字词

objective-c - 排序 JSON 对象

iphone - 如何在iOS中更改UIAlertView对话框的颜色?

ios - 自动布局 : Update constraints on UICollectionViewCell doesn't work

objective-c - Mac OS X 开发的替代范例

ios - 遍历对象数组并添加到数组数组

objective-c - 访问数组中的元素 - 请求非结构或联合中的成员

ios - Cordova iOS 应用程序哪个是正确的 www 文件夹?

ios - 如何为 Watch OS 2 更新 openParentApplication?

ios - UIKeyboardWillChangeFrameNotification 并不总是被调用