簡體   English   中英

具有多個條件的Core-Data NSPredicate

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM