假设我有 person->phones 关系(当然是一对多)。初始插入保存在我做的地方正常工作:
if (does not exist) {
user = (Member *)[NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:ctx];
} else {
searchObjectsForEntity:@"Person" withPredicate:pred andSortKey:nil andSortAscending:NO andContext:ctx];
是否应该只用一个 insertNewObjectForEntityForName 来替换它,它可以插入或存在?
接下来,我需要创建我的手机对象并将它们添加到我的 Person 中,我这样做是这样的:
NSManagedObject* mo=nil;
Phone* phone = (Phone *)[NSEntityDescription insertNewObjectForEntityForName:@"Phone"
inManagedObjectContext:ctx];
[mutableSetOfPhones addObject:mo];
user.phones = phones;
因此,我创建了一个电话管理对象的新实例,将其添加到集合中并将其添加到人员,然后保存。这一切都很好,除非我使用相同的代码重新保存 Person 实例,即编辑/插入/删除电话或对用户数据进行任何其他修改。旧的电话记录保留在数据库中,不再与任何人相关联。
这样做的正确方法是什么?我是否需要遍历 user.phones 才能通过某个 id 查看编辑/删除?我是否应该在保存更新的记录之前删除旧实例(更简单)?推荐的方法是什么,也许我做的事情完全不正确?