使用 2 个 NSPredicates?
Posted
技术标签:
【中文标题】使用 2 个 NSPredicates?【英文标题】:Using 2 NSPredicates? 【发布时间】:2013-11-13 03:56:48 【问题描述】:我试图在我的 NSPredicate 中满足 2 个条件,但我收到以下错误。
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unable to parse the format string "(whosEval == %@) AND ([age integerValue] >= 9 && [age integerValue] <= 11)"'
我知道问题出在格式上,但我找不到任何对我有帮助的问题。我做错了什么?这是我正在使用的代码。注意:年龄是核心数据实体的字符串属性。
NSPredicate *evalPredicate =
[NSPredicate predicateWithFormat:@"(whosEval == %@) AND
([age integerValue] >= 9 && [age integerValue] <= 11)", currentAthlete];
【问题讨论】:
您不能将 integerValue 之类的东西放入谓词中,这将不起作用并导致您看到的错误 @darren102:你建议我如何检查年龄,因为它是一个 NSString? 会建议使用 NSNumber 作为 Core Data 中的年龄属性,否则您需要使用第一个谓词获取 NSArray,然后在目标 c 中使用 block 进行谓词以使用 integerValue 方法 【参考方案1】:可以使用以下内容:
NSPredicate *evalPredicate = [NSPredicate predicateWithFormat:@"(whosEval == %@)", currentAthlete];
在 Core Data 中运行它,然后假设 NSArray *results
results predicateWithBlock: 在目标 c 中解析
【讨论】:
以上是关于使用 2 个 NSPredicates?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用两个 NSPredicates 获取请求 - Swift 2
使用 NSPredicates 过滤 NSMutableArray