核心数据管理对象一对多关系插入/更新保存

时间:2013-03-02 15:42:52

标签: core-data insert save one-to-many relationship

让我们假设我有人与电话的关系(当然是一对多)。初始插入保存在我执行的地方正常工作:

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

0 个答案:

没有答案