带数组的核心数据获取请求

时间:2010-04-15 17:29:25

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

我正在尝试使用谓词设置获取请求,以获取商店中的记录,其标识符属性与谓词中指定的标识符数组匹配,例如

NSString *predicateString = [NSString stringWithFormat:@"identifier IN %@", employeeIDsArray];

employeeIDsArray包含许多与商店中的ID匹配的NSNumber对象。但是,我收到错误“无法解析格式字符串”。如果它用于过滤数组,则此类型的谓词有效,但如上所述,对于核心数据提取失败。我该如何设置谓词?

2 个答案:

答案 0 :(得分:11)

NSPredicate不使用NSString之类的格式。因此,使用预生成的predicateString创建谓词的结果将不是有效的谓词。

你必须使它成为一个实际的谓词:

NSPredicate * predicate = [NSPredicate predicateWithFormat:@"identifier IN %@", employeeIDsArray];
[fetchRequest setPredicate:predicate];

有关谓词格式的更多信息,请参阅the documentation

答案 1 :(得分:4)

使用stringWithFormat:创建该字符串时,该方法会插入数组的 description (描述数组内容的字符串)%@

这不是你想要的。您不希望在描述该数组的字符串中测试成员资格;您想测试数组中的成员资格。所以,不要通过stringWithFormat: - 直接将格式字符串和数组传递给predicateWithFormat: