2010-10-18 29 views
0

我注意到,在我的核心数据数据模型中,一些实体(在左上角的面板中)有一个'NSManagedObject'类,有些是以类(Person,Company等)命名的。似乎没有任何逻辑来判断实体是否具有Person类的NSManagedObject类等。我的代码似乎工作正常。所以我想知道为什么有差距?为什么一些实体NSManagedObjects和一些以他们的类命名的实体?

编辑

感谢本笃科恩使事情更清楚一点。 这是我当前的代码:

Person *per = (Person *)[NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:managedObjectContext]; 
[per setName:@"Steve Jobs"]; 

..This工作是否自定义类是在数据模型或没有明确提及。但我仍然需要自定义类。我做错了吗?我想知道我是否可以简化我的代码。自定义类是通过选择实体并转到“新建文件 - 托管对象类”来创建的,但我认为当我更改它们时链接可能已经断开。

+0

的逻辑是:你创造它,现在你拥有它。除非您创建了自定义类,否则不会使用自定义类。 – 2010-10-18 11:18:09

+1

因为返回类型是'id',而不是'NSManagedObject',所以不需要转换'insertNewObjectForEntityForName:'的返回值。当类型是'id'时,编译器假定你知道你在做什么,并且不会发出任何警告。 – 2010-10-18 13:09:56

回答

2

最好为每个实体创建一个类,但这不是必需的。通过为实体创建一个类它使得使用属性而不是setValue:forKey:如:

person.name = @"Harry Hippy"; //this is good 
[person setValue:@"Harry Hippy" forKey:@"naem"]; //this is bad. The compiler won't notice the typo and will result in a run-time error 

你必须尽快Person需要做的比存储数据更加创建一个类。

+0

谢谢。我已经更新了我的问题。它看起来像我需要一个自定义类,因为我将它转换为自定义类? ..另外,你可以举一个例子,说明一个managedobject自定义类需要做什么比存储数据更多..? – cannyboy 2010-10-18 11:51:16

+1

例如,如果您尝试保存小于2个字符的名称,则可以实现显示消息的函数。 – 2010-10-18 12:09:38

相关问题