使用关系在实体中添加数据

时间:2014-04-02 06:14:58

标签: ios database core-data entity-relationship iphonecoredatarecipes

enter image description here

在我的核心数据模型中,我有这样的关系(见图)

现在

Location *locObj = [NSEntityDescription insertNewObjectForEntityForName:@"Location"
                                                              inManagedObjectContext [self managedObjectContext]];

Room *roomObj = [NSEntityDescription insertNewObjectForEntityForName:@"Room"    
                                       inManagedObjectContext:[self managedObjectContext]];

我已经声明了这两个实体。

问题: -

  1. 由于我已声明房间和位置的对象,首先我需要填写 位置数据,然后我需要填写房间和数据 然后我需要在定位方法中添加空间?这是正确的吗?

  2. 如果我有大数据怎么办?我每次都需要添加对象,还是有任何我们可以连接的自定义支持类?

1 个答案:

答案 0 :(得分:1)

答案

  1. 此处的顺序并不重要,但引用其他实体对象。你可以使用代码

    [locObj addWithRoomObject:roomObj];
    roomObj.withLocation = locObj;
    
  2. 没有这样的自定义支持类。您可以在核心数据中使用自动生成的访问器,它将自动处理。你可以调用函数:

    [locObj addWithRoomObject:roomObj];
    
  3. <强>更新

    添加更多房间:

    Location *locObj = [NSEntityDescription insertNewObjectForEntityForName:@"Location"
                                                              inManagedObjectContext [self managedObjectContext]];
    
    locObj.locationName = LOCATION_NAME;
    
    Room *room1 = [NSEntityDescription insertNewObjectForEntityForName:@"Room"    
                                       inManagedObjectContext:[self managedObjectContext]];
    // Fill room1 details
    ...
    room1.withLocation = locObj;
    [locObj addWithRoomObject:room1];
    
    Room *room2 = [NSEntityDescription insertNewObjectForEntityForName:@"Room"    
                                       inManagedObjectContext:[self managedObjectContext]];
    // Fill room2 details
    ...
    room2.withLocation = locObj;
    [locObj addWithRoomObject:room2];
    
    // so on..