【发布时间】:2010-11-28 23:49:31
【问题描述】:
我正在尝试根据用户定义的类型列表获取一堆特定类型的记录……
[fetchRequest setEntity:[NSEntityDescription entityForName:@"myRecord" inManagedObjectContext:self.managedObjectContext]];
NSSet *shipTypes = [NSSet setWithObjects:[NSNumber numberWithInt:70],
[NSNumber numberWithInt:71],
[NSNumber numberWithInt:72],
[NSNumber numberWithInt:73],
[NSNumber numberWithInt:74],
nil];
NSPredicate *aPredicate = [NSPredicate predicateWithFormat:@"type in %@", shipTypes];
[fetchRequest setPredicate:aPredicate];
theRecords = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];
…运行时,executeFetchRequest 消息抛出异常…
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'unimplemented SQL generation for predicate : (type IN {71, 73, 70, 72, 74})'
是我做错了什么,还是真的不支持?
【问题讨论】:
-
这应该可行,但我终其一生都无法弄清楚为什么不可行。阅读 Predicate Format String Syntax 文档,看看你是否能找到任何东西:developer.apple.com/mac/library/documentation/Cocoa/Conceptual/…
-
同意。您可以尝试使用 NSArray 而不是 NSSet,但这应该可以正常工作。
-
如果你成功了,你应该将其中一个答案标记为正确。