在xcdatamodeld文件中,我創建了一個Person
實體,其中firstName
,lastName
和email
字段。然後我創建了一個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應該正確地生成類,我應該能夠使用它們開箱即用。
我,[和其他人](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