使用 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

在 Swift 中将两个 NSPredicates 与独立的 NSSortDescriptors 结合起来

NSPredicates 和双对 n 关系

ios中的多个NSPredicates到单个数组值

核心数据关系、NSPredicates 和 NSFetchedResultsController