Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.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
Ios 使用NSArray时NSPredicate崩溃_Ios_Objective C_Core Data_Nsarray_Nspredicate - Fatal编程技术网

Ios 使用NSArray时NSPredicate崩溃

Ios 使用NSArray时NSPredicate崩溃,ios,objective-c,core-data,nsarray,nspredicate,Ios,Objective C,Core Data,Nsarray,Nspredicate,…结果如下: NSArray * myArray2 = [NSArray arrayWithObjects:@"1",@"2",@"3",nil]; NSString *predString = [NSString stringWithFormat:@"byParada.circuito IN %@", myArray2]; request.predicate = [NSPredicate predicateWithFormat:predString]; 事实上,如果我删除myArray2

…结果如下:

NSArray  * myArray2 = [NSArray arrayWithObjects:@"1",@"2",@"3",nil];

NSString *predString = [NSString stringWithFormat:@"byParada.circuito IN %@", myArray2];
request.predicate = [NSPredicate predicateWithFormat:predString];
事实上,如果我删除
myArray2
的所有数字,只留下一个(
NSArray*myArray2=[NSArray arraywhithobjects:@“1”,nil];
),NSPredicate就可以工作了


任何帮助都将不胜感激。

要解决这个问题,有两件事要做。首先,格式化字符串应采用predicateWithFormat格式,而不是NSString格式,NSString随后被传递给谓词。第二,在一对多的关系中,你必须包括任何一个或全部

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unable to parse the format string "byParada.circuito IN (
    1,
    2,
    3
)"'

尝试执行request.predicate=[NSPredicate predicate-withformat:@“byParada.circuito IN%@”,myArray2];当它执行
[self.fetchedResultsController performFetch:nil]
时,它崩溃:
***由于未捕获的异常“NSInvalidArgumentException”终止应用程序,原因是:'谓词的未实现SQL生成:(byParada.circuito在{“1”、“2”、“3”})中)
的数据类型是什么“circuito”?它在模型中是如何定义的?它有什么关系吗?我编辑了第一篇文章,在
setupFetchedResultsController
中,我使用的是实体
Parada
,而
circuito
被定义为字符串add any,比如:request.predicate=[NSPredicate-predicateWithFormat:@“any byParada.circuito in%@“,myArray2];
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unable to parse the format string "byParada.circuito IN (
    1,
    2,
    3
)"'
request.predicate = [NSPredicate predicateWithFormat:@"ANY byParada.circuito IN %@", myArray2];