0

假设我有 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 查看编辑/删除?我是否应该在保存更新的记录之前删除旧实例(更简单)?推荐的方法是什么,也许我做的事情完全不正确?

4

0 回答 0