我正在尝试设置输入的核心数据值之间的关系。我目前已经设置了它,所以当我添加它时,它会在相应的实体中创建关系,我可以在详细视图中查看。
我想要实现的是将关系添加到字符串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]);
}
我希望这很清楚。
答案 0 :(得分:1)
当然它是这样做的 - 你正在创建一个新的Routines
对象:
Routines *routineEntity = [NSEntityDescription insertNewObjectForEntityForName:@"Routines"inManagedObjectContext:context];
如果要将新的RoutinesDetails
对象与现有的Routines
对象关联,则不要创建新的Routines
对象,而是使用已有的对象。
鉴于前面的注释明确指出正在创建一个新对象,并且它引用了一个完全不同的对象,我猜你已经复制并粘贴了这个代码而不是编写它。我建议通过教程,而不是试图让其他人的代码工作而不理解发生了什么。