让我们假设我有人与电话的关系(当然是一对多)。初始插入保存在我执行的地方正常工作:
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的编辑/删除?我应该在保存更新记录之前删除旧实例(更简单)吗?推荐的方法是什么,也许我做的事情完全不正确?