2011-06-14 49 views
0

我有兩個不同的對象,我使用相同的上下文使用insertNewObjectForEntityForName創建。
我的問題是對於第一個對象Event,對象類型被正確定義爲Event,而對於應該是Credit類型的第二個對象,對象類型是NSManagedObject(這意味着我無法調用方法定義在派生類中)。使用'insertNewObjectForEntityForName'創建的對象的意外類類型

對象1:(預期)

Event *event = (Event*)[NSEntityDescription insertNewObjectForEntityForName:@"Event" inManagedObjectContext:context]; 

(gdb) po event 
<Event: 0x62b3f00> (entity: Event; id: 0x62b3fb0 <x-coredata:///Event/tD3B27884-D303-4FDE-9D0F-D7DC009E2EBB18> ; data: { 
... 
}) 

對象2:(預期類是Credit而不是NSManagedObject

Credit *credit = (Credit*)[NSEntityDescription insertNewObjectForEntityForName:@"Credit" inManagedObjectContext:context]; 

(gdb) po credit 
<NSManagedObject: 0x629fd50> (entity: Credit; id: 0x628caf0 <x-coredata:///Credit/tD3B27884-D303-4FDE-9D0F-D7DC009E2EBB36> ; data: { 
... 
}) 

回答

1

大概你已經仔細檢查過,實體是否確實映射到了模型編輯器中的Credit類?

+0

該死的 - 編輯...我把它錯誤地映射到了「Credits」。謝謝! – 2011-06-14 21:00:49

+0

是的,如果你錯過了,你不會得到任何警告。確保它始終正確的一種方式(顯然除了測試)是在模型編輯器中從模型生成類。 – Thom 2011-06-14 21:35:28

2

你沒有爲數據模型中的實體分配自定義類名,以便上下文僅返回通用託管對象insta NCE。現在它只是說「NSManagedObject」而不是「Credit」。

相關問題