Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 带数组的核心数据获取请求_Objective C_Cocoa_Cocoa Touch_Core Data - Fatal编程技术网

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因为注意到它为什么不起作用!我只是觉得他忘了把他的字符串变成谓词。