[英]Core-Data NSPredicate with multiple to-many conditions
大家好,
我有以下核心數據數據庫:
(很遺憾,由於防止了垃圾郵件,我無法嵌入圖像!)
數據庫模型圖片: http : //snapplr.com/eqx9
我正在嘗試創建一個fetchRequest,以獲取其fcCollection.fcSets.trainingSet
屬性是我的代碼中的對象的所有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; correctFC:0,FCMistake :55; correctFC:9,FCMistake:空FC; correctFC:3,FCMistake:空FC; correctFC:9,FCMistake:空FC; correctFC:4}))
這一定是有可能的! 在此先感謝您的幫助!
問候,金
從《謂詞編程指南》中:
Core Data SQL存儲每個查詢僅支持一個到多個操作; 因此,在發送到SQL存儲的任何謂詞中,ALL,ANY和IN可能只有一個運算符(以及該運算符的一個實例)。
因此,如果您使用的是SQL數據存儲,則只能在謂詞中表示一對多關系。 如果更改為其他一些持久性存儲,則似乎暗示此特定限制已解除。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.