0

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

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

输入值时的当前情况 输入值时的当前情况

因此,与其创建:

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]);
    }

我希望这很清楚。 在此处输入图像描述

4

1 回答 1

1

当然它的行为方式是这样的——你正在创建一个新Routines对象:

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

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

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

于 2013-07-16T22:09:14.353 回答