2014-11-06 52 views
0

在xcdatamodeld文件中,我創建了一個Person實體,其中firstName,lastNameemail字段。然後我創建了一個User實體,其中有一個額外的字段。我將Person設置爲User的母公司。NSManagedObject CoreData中的父子層次

然後,我使用'創建NSManagedObject子類...'選項從'編輯'菜單,併爲這些實體生成類。

現在當我做了User* user = [[User alloc] init]時,出於某種原因,我無法訪問user.firstName或超類Person的其他屬性。它說,

當我檢查時,產生User類是的NSManagedObject而不是Person子類「屬性的firstName是不是類型的用戶*的對象發現」。我認爲這是一個問題,並將User更改爲Person的子類。代碼編譯正常,但在運行時崩潰此錯誤 -

2014-11-05 20:24:14.142 MyApp[15131:3332646] CoreData: error: Failed to call designated initializer on NSManagedObject class 'User' 
2014-11-05 20:24:14.142 MyApp[15131:3332646] -[User setFirstName:]: unrecognized selector sent to instance 0x7fee5a436b90 

我真的不知道我在做什麼錯在這裏。我認爲Xcode應該正確地生成類,我應該能夠使用它們開箱即用。

+0

我,[和其他人](http://stackoverflow.com/questions/25703485/coredata-abstract-entity-with-relationship/)發現它很容易在XCode GUI中沒有父母實體。簡單地將父實體設置爲Person應該足以訪問user.firstName。您還可以查詢user.entity.superEntity.name或其他此類路徑來檢查繼承。 – stevesliva 2014-11-06 05:18:00

回答

2

我懷疑失敗的初始化(列表中的第一個錯誤)是第二個錯誤(無法識別的選擇器)的原因。您需要使用initWithEntity:insertIntoManagedObjectContext:而不僅僅是init。或者使用NSEntityDescriptioninsertNewObjectForEntityForName:inManagedObjectContext:類方法。

+0

是的。幾個小時後,我意識到。這是問題所在。 – 2014-11-06 18:02:15