2012-08-02 98 views
1

我想保存一個目標和一個演員。這兩個實體與責任關係有關:核心數據關係錯誤

Goal *addgoal = (Goal*)[NSEntityDescription insertNewObjectForEntityForName:@"Goal" inManagedObjectContext:context]; 

    addgoal.goalNaam = nameTextField.text; 
    addgoal.goalId = idField.text; 
    addgoal.goalBeschrijving = beschrijvingField.text; 

    Actor *addactor = (Actor*)[NSEntityDescription insertNewObjectForEntityForName:@"Actor" inManagedObjectContext:context]; 

    addactor.actorNaam = responsibleField.text; 

    [addgoal addResponsibilityObject:addactor]; 

以上([addgoal addResponsibility:addactor])行導致該錯誤,什麼是錯的?

在Goal.h

@interface Goal (CoreDataGeneratedAccessors) 
- (void)addResponsibilityObject:(Actor *)value; 
@end 

錯誤:

2012-08-02 20:57:11.838 Choose3 [7434:FB03] - [__ NSCFSet實體]:無法識別的選擇發送到實例0x8877810 2012-08-02 20:57:11.840 Choose3 [7434:FB03] *終止應用程序由於未捕獲的異常 'NSInvalidArgumentException',原因: ' - [__ NSCFSet實體]:無法識別的選擇發送到實例0x8877810'

+0

某處你試圖調用一個名爲'entity'的方法,但是你調用的是錯誤類型的對象。 – 2012-08-02 19:05:23

+0

沒有方法「實體」。是否有必要實現' - (void)addResponsibilityObject:(Actor *)value;' ? – Fuzej 2012-08-02 19:21:24

+0

你需要給我們實現' - (void)addResponsibilityObject:(Actor *)value;' – 2012-08-02 19:40:19

回答

0

它似乎Core Data對責任關係的性質感到困惑。我建議創建符合數據模型當前狀態的NSManagedObject子類。

創建此錯誤的一種方法是在不重新生成實體類文件的情況下將多對多關係轉換爲一對一關係。

+0

我已經重新生成了我的課程文件,但仍然出現此錯誤(所有關係都與我的模型中的許多關係有關) 奇怪的是: 'NSString * naamActor = [goal valueForKeyPath:@「responsibilities.actorNaam」] ; NSLog(@「Naam actor will appear:%@」,naamActor); responsibleField.text = [goal valueForKeyPath:@「responsibilities.actorNaam」];' NSLog工程(他給我naamActor) 但是naamActor無法顯示在文本字段中.. – Fuzej 2012-08-03 15:23:02

5

我剛剛遇到同樣的問題。這裏的解決方案是,我忘了檢查模型檢查器中關係選項中的「To-Many」選項。