我注意到在我的Core Data数据模型中,某些实体(在左上角的面板中)有一个'NSManagedObject'类,有些实体以类(Person,Company等)命名。似乎没有任何逻辑,实体是否有一个人类的NSManagedObject等等。我的代码似乎工作正常。所以我想知道为什么会出现这种差异?
修改
感谢Benedict Cohen让事情变得更加清晰。 这是我目前的代码:
Person *per = (Person *)[NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:managedObjectContext];
[per setName:@"Steve Jobs"];
..无论是否在数据模型中明确提到自定义类,这都有效。但我仍然需要自定义类。我做错了吗?我想知道我是否可以简化我的代码。通过选择实体并转到“新文件 - 托管对象类”来创建自定义类..但我认为当我更改它们时链接可能已经破坏。
答案 0 :(得分: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
需要做的不仅仅是存储数据,您就必须创建一个类。