0

几天来,我一直在做这个单一的任务,试图让核心数据实体之间的关系正常工作。我已经实现了这一点,但现在我需要对其进行更改,以便将新属性值的关系添加到现有对象中。它是一个一对多的数据库。

我不确定如何将关系添加到已经存在的对象。因此,在添加到 RoutineDetail 的新对象中,我将如何创建与例程实体中已经存在的对象的关系?

我查看了几个示例,所有示例都显示了如何向新添加的对象添加关系,但我需要它,以便新对象RoutinesDetailsRoutines.

的值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];

在此处输入图像描述

4

1 回答 1

0

我认为,您的主要问题陈述是:

我需要它,以便 RoutinesDetails 中的新对象与 Routines 中已经存在的值有关系。

我认为您的数据模型如下所示:

Routine <----> RoutineDetail

即每个例程都有一个例程细节(一对一的关系)。

但这并没有任何意义。您可以简单地将 RoutineDetail 的属性包含在 Routine 实体中。

代替

desiredValue = routineDetail.routine.value;

你只会有

desiredValue = routineDetail.value;

另外,请注意您的代码存在许多问题。第一行完全没有必要,只需使用 self.managedObjectContext. 此外,根据惯例,您使用大写首字母作为变量。这些应该保留给类名。您添加关系的方法看起来也不正确。

您可以添加这样的关系,而无需方法调用:

routineObject.detail = detailObject;
于 2013-07-17T15:16:21.450 回答