【发布时间】:2009-08-04 01:08:53
【问题描述】:
我对 Core Data 的一个方面有些困惑。也就是说,我什么时候使用基本的 alloc/init 例程,而不是使用核心数据创建一个对象并将其保存到当前托管对象上下文中。
我知道这是一个相当模糊的问题,所以让我举个例子。
我目前正在开发一个应用程序,它会遍历 iPhone 上用户的所有通讯录。从那里,我编写了一个名为“Person”的模型类。我曾经在一群人中做过这样的事情:
Person *person = [[Person alloc] initWithWrapper:mywrapper];
mywrapper 将包含一个带有 person 属性的 NSDictionary。稍后我就可以在我的应用程序中使用人员对象填充通讯录。
现在我已经开始使用 Core Data 重建应用程序的某些部分。我是否继续使用上述策略来填充我的通讯录?或者我是否可以这样做:
Person *person = (Person *)[NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:managedObjectContext];
[person setName:name];
[person setDob:dob];
// Commit the change.
NSError *error;
if (![managedObjectContext save:&error]) {
// Handle the error.
}
问题是,每次应用启动时都会执行此代码。我是否应该不使用核心数据,因为它会在每次加载应用程序时使用冗余人员实例填充存储机制?我应该修改我的 NSManagedObject(Person 类)并添加我的 initWithWrapper: 方法并像往常一样继续吗?
有点困惑,希望澄清。
【问题讨论】:
标签: iphone objective-c cocoa cocoa-touch core-data