我已经在这个单独的任务中工作了几天,试图让核心数据实体之间的关系有效。我已经实现了这一点,但现在我需要更改它,以便新属性值将其关系添加到现有对象。它是一对多的数据库。
我不确定如何向已存在的对象添加关系。因此,在添加到RoutineDetail的新对象中,如何创建与例程Entity中已存在的对象的关系?
我已经看了几个示例,这些示例都显示了如何向新添加的对象添加关系,但我需要它,因此RoutinesDetails
中的新对象与Routines
中已存在的值有关系。 / p>
Routines
的值保存在名为RoutineText
rout is the NSmangedObject for the entity Routines
routDet is the NSmanagedObject for the entity RoutinesDetails
我留下了注释掉的代码,允许我在创建两个新对象时添加关系。
这是我在项目中要做的最后一件事,但它让我疯了。我将永远感激这里的解决方案。任何建议将不胜感激,因为这是最好的知识门户网站。谢谢。
NSManagedObjectContext *context = [self managedObjectContext];
// Create a new device
ExcerciseInfo *info = [_fetchedResultsController objectAtIndexPath:indexPath];
//rout = [NSEntityDescription insertNewObjectForEntityForName:@"Routines" inManagedObjectContext:context];
routdet = [NSEntityDescription insertNewObjectForEntityForName:@"RoutinesDetails" inManagedObjectContext:context];
//Add attribute values
//[rout setValue: RoutineText forKey:@"routinename"];
[routdet setValue: info.name forKey:@"image"];
//Create Relationship
[rout addRoutinedetObject:routdet];
答案 0 :(得分:0)
我认为你的主要问题是:
我需要它,所以RoutinesDetails中的新对象与Routines中已经存在的值有关系。
我认为您的数据模型如下所示:
Routine <----> RoutineDetail
即。每个例程都有一个例行细节(一对一的关系)。
但这没有任何意义。您可以在Routine实体中简单地包含RoutineDetail的属性。
而不是
desiredValue = routineDetail.routine.value;
你只需拥有
desiredValue = routineDetail.value;
另外,请注意您的代码存在许多问题。第一行完全没必要,只需使用 self.managedObjectContext
即可。 此外,根据惯例,您使用Capital首字母变量。这些应保留给类名。您添加关系的方法看起来也不正确。
您可以在没有方法调用的情况下添加这样的关系:
routineObject.detail = detailObject;