Objective c 带数组的核心数据获取请求
我正在尝试使用谓词设置一个获取请求,以获取存储中标识符属性与谓词中指定的标识符数组匹配的记录,例如Objective c 带数组的核心数据获取请求,objective-c,cocoa,cocoa-touch,core-data,Objective C,Cocoa,Cocoa Touch,Core Data,我正在尝试使用谓词设置一个获取请求,以获取存储中标识符属性与谓词中指定的标识符数组匹配的记录,例如 NSString *predicateString = [NSString stringWithFormat:@"identifier IN %@", employeeIDsArray]; EmployeeIdArray包含许多与存储中的ID匹配的NSNumber对象。但是,我得到一个错误“无法解析格式字符串”。如果这种类型的谓词用于过滤数组,那么它是有效的,但是如上所述,核心数据获取失败。我应
NSString *predicateString = [NSString stringWithFormat:@"identifier IN %@", employeeIDsArray];
EmployeeIdArray包含许多与存储中的ID匹配的NSNumber对象。但是,我得到一个错误“无法解析格式字符串”。如果这种类型的谓词用于过滤数组,那么它是有效的,但是如上所述,核心数据获取失败。我应该如何设置谓词?
NSPredicate
不使用类似于NSString
的格式。因此,使用预先生成的谓词字符串创建谓词的结果将不是有效的谓词
必须使其成为实际谓词:
NSPredicate * predicate = [NSPredicate predicateWithFormat:@"identifier IN %@", employeeIDsArray];
[fetchRequest setPredicate:predicate];
有关谓词格式的更多信息,请参见。当您使用
stringWithFormat:
创建该字符串时,该方法会在您拥有%@
的位置插入数组的说明
(描述数组内容的字符串)
那不是你想要的。您不想在描述数组的字符串中测试成员身份;您想测试数组中的成员资格。因此,不要使用
stringWithFormat:
-直接将格式字符串和数组传递给predicateWithFormat:
。谢谢,但我当然会调用:NSPredicate*predicate=[NSPredicate predicateWithFormat:predicateString];抱歉没有早些接受你的回答。我试过你的建议,效果很好。谢谢。必须给第一张海报“回答”,但是+1因为感谢你,我现在明白了原因。+1因为注意到它为什么不起作用!我只是觉得他忘了把他的字符串变成谓词。