Helo家伙,
我有以下核心数据库:
(遗憾的是,由于垃圾邮件的预防,我无法嵌入图片!)
数据库模型图片:http://snapplr.com/eqx9
我正在尝试创建一个fetchRequest,它获取fcCollection.fcSets.trainingSet
属性是我的代码BUT中的对象的所有FC对象都不在trainingSet.memorizationSession.mistakeFCs
中。我想在NSFetchedResultsController
中使用它。
我尝试了很多不同的东西而且它们都没有用(不幸的是我没有保存我尝试的东西,所以我不能发布)。 但我尝试过SUBQUERIES等等。我的最后一种方法如下:
NSFetchRequest *fetchRequest = [[[NSFetchRequest alloc] init] autorelease];
NSEntityDescription *entity = [NSEntityDescription entityForName: kFCMistakeEntityName
inManagedObjectContext: self.managedObjectContext];
[fetchRequest setEntity: entity];
NSPredicate *subPredicate = [NSPredicate predicateWithFormat:
@"memorizationSession.trainingSet == %@", _trainingSet];
[fetchRequest setPredicate: subPredicate];
NSArray *mistakeFCs = [self.managedObjectContext executeFetchRequest:fetchRequest error: nil];
predicate = [NSPredicate predicateWithFormat:
@"ANY fcCollection.fcSets.trainingSet == %@ && NOT mistakeFC in %@", _trainingSet, mistakeFCs];
不幸的是我收到了这个错误:
2011-05-18 22:26:55.643 testApp [9464:207] * 由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'谓词的未实现的SQL生成:(mistakeFC IN { FCMistake:空FC;更正FC:0,FCMistake:55;正确FC:9,FCMistake:空FC;正确FC:3,FCMistake:空FC;正确FC:9,FCMistake:空FC;正确FC:4})'
这必须以某种方式!在此先感谢您的帮助!
问候,金
答案 0 :(得分:1)
来自谓词编程指南:
Core Data SQL商店仅支持 每个查询一对多操作; 因此在任何谓词发送到 SQL商店,可能只有一个 运算符(以及它的一个实例) 运算符)来自ALL,ANY和IN。
因此,如果您使用的是SQL数据存储区,则只能在谓词中表示一对多关系。如果你改为其他一些持久性存储,它似乎意味着这个特殊的限制被解除了。