【问题标题】:Using 2 NSPredicates?使用 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 方法

标签: ios objective-c cocoa-touch core-data nspredicate


【解决方案1】:

可以使用以下内容:

NSPredicate *evalPredicate = [NSPredicate predicateWithFormat:@"(whosEval == %@)", currentAthlete];

在 Core Data 中运行它,然后假设 NSArray *results

results predicateWithBlock: 在目标 c 中解析

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多