2012-02-22 211 views
0

我在制定我的查詢時遇到了問題;這是該方案:核心數據NSPredicate for toMany Relationsihp

my DB schema

在此基礎上DB模式,我知道的命名部分吸了一點,但這是 它已被拉開序幕的一個項目,所以我堅持與。現在

,我的目標是選擇所有具有確定pack_id和一定CATEGORY_ID,即所有從包1第5類的人物角色,所以這次只要是我的NSPredicate

NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(category_id == %@) AND (charRelationship.pack_id == %@)", [[cat valueForKey:@"category_id"] stringValue], curPack]; 
    [request setEntity:[NSEntityDescription entityForName:@"Category" inManagedObjectContext:self.managedObjectContext]]; 
    [request setPredicate:predicate]; 

    NSError *error; 
    NSArray *result = [self.managedObjectContext executeFetchRequest:request error:&error]; 

,因爲編譯器試圖執行fetchRequest,它崩潰並出現SIGABRT。 我真的很討厭xcode甚至沒有給我關於異常的線索,所以我可以自己弄清楚。所以在盲目地嘗試修復它沒有成功之後,我想知道有沒有人能幫助我。 我已經在SO和其他地方衝了很多其他線程,但我找不到任何解決方案。

非常感謝

-K-

+0

你說你想要*字符*,但你的'NSFetchRequest'正在使用* Category *實體。這是什麼? – 2012-02-22 12:44:36

+0

我本來可以做相反的事情(從字符開始),但它並沒有改變我必須處理兩個獨立實體之間的交叉關係這樣的事實,所以它以一種方式或另一種方式進行,它不會改變,我只是想讓它工作。 – holographix 2012-02-22 15:07:09

回答

1

嘗試使用任何的關係:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(category_id == %@) AND (ANY charRelationship.pack_id like %@)", [[cat valueForKey:@"category_id"] stringValue], curPack]; 
+0

已經試過任何方式,但沒有得到我的任何地方:( – holographix 2012-02-22 15:10:29

+0

任何是我的解決方案,以確保關係是category_id數據庫中的NSString?我很困惑你爲什麼使用stringValue – ggfela 2012-02-22 15:20:51

+0

nope它是一個int32, stringValue只是一個絕望的嘗試:) – holographix 2012-02-22 15:21:48

0

其實你不能單獨存儲任何ID爲是相關聯的實體。例如: - 在你的情況,你可能只是指從類的人物實體,如:

[NSPredicate predicateWithFormat:@"catRel = %@", cat]; 

但是,我不知道你有什麼打算與片段做。我是對的,你有一個類別實體存儲在你的'貓'變量中,並且只是用謂詞從數據庫中選擇它?我會說,category_id已經識別你的類別......不管用戶「charRelationship.pasck_id ==%@」,但是加載相應的Character實體並在你剛剛放置實體的地方使用「charRelationship =%@」。

相關問題