作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想使用查询字符串搜索一组用户的名字或姓氏。下面是谓词,但出现异常。
NSPredicate *sortingPred = [NSPredicate predicateWithFormat:@"(User.first contains[c] %@) OR (User.last contains[c] %@)", keyword, keyword];
异常(exception):
exception NSException * name:@"NSUnknownKeyException" reason:@"[<User 0x12911980> valueForUndefinedKey:]: this class is not key value coding-compliant for the key User." 0x13653620
最佳答案
您不能在谓词中包含实体名称,只能包含键(或键路径):
[NSPredicate predicateWithFormat:@"(first CONTAINS[c] %@) OR (last CONTAINS[c] %@)", keyword, keyword]
更新:“FIRST”和“LAST”在谓词中有特殊含义,它们用于指定数组中的第一个或最后一个元素(请参阅“谓词编程指南”中的 Aggregate Operations)。
可以通过使用 %K
格式扩展属性键来避免这种歧义:
[NSPredicate predicateWithFormat:@"(%K CONTAINS[c] %@) OR (%K CONTAINS[c] %@)",
@"first", keyword, @"last", keyword];
关于ios - 如何向 NSPredicate 添加多个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21004565/
我是一名优秀的程序员,十分优秀!