核心数据关系 - 添加到现有值

时间:2013-07-16 20:46:46

标签: ios core-data

我正在尝试设置输入的核心数据值之间的关系。我目前已经设置了它,所以当我添加它时,它会在相应的实体中创建关系,我可以在详细视图中查看。

我想要实现的是将关系添加到字符串RoutineText中保存的实体中的现有值。因此,不是创建第二个相同的条目,而是将关系添加到新条目中。因此在详细视图中,两个条目都是可见的。

输入值时的当前情况 The current situation when inputing the values

所以不要创建:

TestName1 ---->的 TestName1Detail

TestName1 ---->的 TestName2Detail

它会创建:

TestName1 ----> TestName1Detail + TestName2Detail

   NSManagedObjectContext *context = [self managedObjectContext];

    // Create a new device
    ExcerciseInfo *info = [_fetchedResultsController objectAtIndexPath:indexPath];
    Routines  *routineEntity = [NSEntityDescription insertNewObjectForEntityForName:@"Routines"inManagedObjectContext:context];

    RoutinesDetails *routineEntityDetail = [NSEntityDescription insertNewObjectForEntityForName:@"RoutinesDetails" inManagedObjectContext:context];

    //Create Relationship
    [routineEntity addRoutinedetObject:routineEntityDetail];

    //Add attribute values
    //[routineEntity setValue: RoutineText  forKey:@"routinename"];
    [routineEntityDetail setValue: info.name  forKey:@"image"];

    NSError *error = nil;

    // Save the object to persistent store
    if (![context save:&error]) {
        NSLog(@"Can't Save! %@ %@", error, [error localizedDescription]);
    }

我希望这很清楚。 enter image description here

1 个答案:

答案 0 :(得分:1)

当然它是这样做的 - 你正在创建一个新的Routines对象:

Routines  *routineEntity = [NSEntityDescription insertNewObjectForEntityForName:@"Routines"inManagedObjectContext:context];

如果要将新的RoutinesDetails对象与现有的Routines对象关联,则不要创建新的Routines对象,而是使用已有的对象。

鉴于前面的注释明确指出正在创建一个新对象,并且它引用了一个完全不同的对象,我猜你已经复制并粘贴了这个代码而不是编写它。我建议通过教程,而不是试图让其他人的代码工作而不理解发生了什么。