我正在尝试使用谓词设置获取请求,以获取商店中的记录,其标识符属性与谓词中指定的标识符数组匹配,例如
NSString *predicateString = [NSString stringWithFormat:@"identifier IN %@", employeeIDsArray];
employeeIDsArray包含许多与商店中的ID匹配的NSNumber对象。但是,我收到错误“无法解析格式字符串”。如果它用于过滤数组,则此类型的谓词有效,但如上所述,对于核心数据提取失败。我该如何设置谓词?
答案 0 :(得分:11)
NSPredicate
不使用NSString
之类的格式。因此,使用预生成的predicateString创建谓词的结果将不是有效的谓词。
你必须使它成为一个实际的谓词:
NSPredicate * predicate = [NSPredicate predicateWithFormat:@"identifier IN %@", employeeIDsArray];
[fetchRequest setPredicate:predicate];
有关谓词格式的更多信息,请参阅the documentation。
答案 1 :(得分:4)
使用stringWithFormat:
创建该字符串时,该方法会插入数组的 description
(描述数组内容的字符串)%@
这不是你想要的。您不希望在描述该数组的字符串中测试成员资格;您想测试数组中的成员资格。所以,不要通过stringWithFormat:
- 直接将格式字符串和数组传递给predicateWithFormat:
。