我想取一串某種類型的記錄,基於由用戶定義的類型列表上...iPhone上的CoreData支持IN謂詞嗎?
[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文檔並查看是否可以找到任何內容:http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/Predicates/Articles/pSyntax.html – Tim 2009-09-16 23:56:23
同意。你可以嘗試使用NSArray而不是NSSet,但應該按照書面方式工作。 – 2009-09-17 06:46:22
如果你得到它的工作,你應該標記其中一個答案是正確的。 – 2010-08-10 23:11:46