ios - 当我使用 NSPredicate 为我的 UITableView 过滤我的数组时应用程序崩溃
问题描述
我正在NSPredicate
使用tableView
.
下面是我已经实现的代码。
-(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];
}
}
我的tableData
:
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";
}
)
当我使用上面的代码时,我的应用程序崩溃了。
由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[valueForUndefinedKey:]:此类不符合键显示名称的键值编码。”
提前致谢。
解决方案
你的 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];
推荐阅读
- tensorflow - tensorflow_lite Prelu 不支持 dims->size = 2
- ios - 动画 tableview 高度约束,但动画正在跳跃
- mysql - 拥有多个地址表是个好主意吗?
- java - 在 liferay 中使用 commons-fileupload 无法正确解析请求
- node.js - 为什么将 WSDL 文件传递给肥皂服务器?
- sql - 在 Oracle SQL 中使用另一个表中的数据创建一个新表
- javascript - Javascript:将数组转换为 CSV 格式并复制到剪贴板
- php - PHP cannot connect to mysql through python
- corda - 如何在corda api中使用post而不是put?
- unity3d - Unity NetworkDiscovery,使用“使用 NetworkManager”?