2011-02-24 156 views
1

嗨,我正在使用核心數據應用程序,我的查詢是,我有一個孩子和家長的關係與父子關係與孩子有反向關係,在父母實體中有很多關係檢查,核心數據問題

所以現在我的查詢是,我要訪問父名客戶可以通過只給孩子的名字,所以我使用斷言這這裏要說的母親的名字是我的代碼

-(void)reteriveviaPredicate 
{ 
    NSFetchRequest *fetchReq = [[NSFetchRequest alloc]init]; 
    [fetchReq setEntity:[NSEntityDescription entityForName:@"Child" 
            inManagedObjectContext:self.managedObjectContext]]; 

    NSPredicate *pred = [NSPredicate predicateWithFormat:@"Childname=='ravi'"]; 
    [fetchReq setPredicate:pred]; 
    NSArray *t = [self.managedObjectContext executeFetchRequest:fetchReq error:nil]; 

    for(Child *p in t) 
    { 
     NSLog(@"%@",p.Childname); 

     for(Parent *p1 in p.childToParent) 
     { 
     NSLog(@"Mother name is %@",p1.MotherName); 
     } 
    }  
} 

視圖在上面代碼我得到一個警告說,

warning: NSManagedObject' may not respond to '-countByEnumeratingWithState:objects:count: 

,當我運行應用程序南下的應用程序,請你幫我出這個

感謝和問候

+0

親愛的基數,請學會正確格式化問題。點擊上面的「編輯」條目即可看到它是如何完成的。 – Yuji 2011-02-24 08:21:31

+0

請發佈您的頭文件「Parent」類。 – Yuji 2011-02-24 08:22:53

+0

@Yuji:已經完成了這個bro,這只是我顯示的代碼的一部分,已經爲Parent和Child添加了標題。是的,我會正確格式化我的問題.... :) – Radix 2011-02-24 08:29:55

回答

0

檢查childToParent是一對多的關係。我猜這不是。

for(Parent *p1 in p.childToParent) 

編輯:

會發生什麼,如果你有

替換

for(Parent *p1 in p.childToParent) 
{ 
    NSLog(@"Mother name is %@",p1.MotherName); 
} 


的for循環,如果這將是一個一對多的關係只能工作

NSLog(@"Mother name is %@",p.childToParent.MotherName); 
+0

沒有它的不,父母的關係太多,但我想通過使用孩子的名字得到母親的名字,我得到了孩子的名字,如果我給任何其中一個父名稱 – Radix 2011-02-24 08:36:25

+0

@Radix您無法在一對一關係中使用枚舉(for循環)。因爲沒有一組對象,所以在另一端只有一個對象。看我的編輯。 – 2011-02-24 08:40:46

+0

尤里卡得到了做我所做的就是這樣的(兒童* P在T) \t { \t \t的NSLog(@ 「%@」,((母公司*)(p.childToParent))MotherName。); \t} – Radix 2011-02-24 09:03:52

0

當關系設置爲1對1,而不是1對多時,我有這個警告。修復關係類型解決了問題。