2011-06-14 52 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”。

相关问题