2011-09-18 69 views
1

實體時,我有以下實體:錯誤插入延伸抽象實體

  • User。具有用戶名,郵件等的普通用戶實體
  • ComputerUserWithAI。與用戶類似,但由應用程序控制。
  • Pick。包含與Game的關係,它應該包含一個選擇器。

由於Picker可以是UserComputerUserWithAI我創建了一個Abstract Entity稱爲Picker和我製成UserComputerWithAI延長該Picker類。 一旦我添加Picker實體,我製作的PickPicker實體有關係,稱爲選取器。

一切都很順利,但我無法插入ComputerUserWithAIPick。我的代碼是這樣的:

ComputerUserWithAI *userWithAI = [NSEntityDescription insertNewObjectForEntityForName:@"ComputerUserWithAI" inManagedObjectContext:ctx]; 
userWithAI.name = @"DeepBlue"; 

Pick *pick = [NSEntityDescription insertNewObjectForEntityForName:@"Pick" inManagedObjectContext:ctx]; 
pick.game = game; 
pick.picker = userWithAI; 

我得到的錯誤是:

終止應用程序由於未捕獲的異常 「NSInvalidArgumentException」的,理由是:「不能接受的值類型爲 到一個關係:property =「picker」;期望的類型= Picker;給定 type = NSManagedObject;值=(單位: ComputerUserWithAI ...

但是當我做:

pick.picker = [NSEntityDescription insertNewObjectForEntityForName:@"Picker" inManagedObjectContext:ctx]; 

它的工作

我查了從核心數據生成的類,並且它們擴展摘要。 。實體正確什麼可能是錯誤

回答

0

發現錯誤的產生Pick.h了下列文件:?

@class Picker 
@interface Pick : NSManagedObject 

@property (nonatomic, retain) NSManagedObject *game; 
@property (nonatomic, retain) Picker *picker; 

將其更改爲:

@interface Pick : NSManagedObject 

@property (nonatomic, retain) NSManagedObject *game; 
@property (nonatomic, retain) NSManagedObject *picker; 

了一切工作。

嘗試驗證由Xcode生成的代碼。這發生在我身上,使用Xcode 4.2。