核心数据简单的一对一关系

时间:2011-10-21 20:35:00

标签: core-data

我有一个简单的核心数据问题。

我设置了一个员工实体和一个employeeDetails实体。两者都有指向另一方的关系,形成一个简单的一对一关系。每位员工都有一名员工详细信息。

我可以存储新员工并在需要时获取它们。我的问题是如何在存储员工的同时存储匹配的employeeDetails,以及如何在fetch中检索匹配员工的详细信息?

感谢您提供的任何帮助。

2 个答案:

答案 0 :(得分:1)

使用每次插入员工relvar时触发的触发器。

http://en.wikipedia.org/wiki/Database_trigger

答案 1 :(得分:0)

我通过为实体重新生成类来解决我的问题,核心数据将添加一个表示关系的动态变量。当我存储实体时,我创建了一个Employee和EmployeeDetails对象,并将员工详细信息字段(由核心数据动态管理)指向我的EmployeeDetails对象。

- (void)addEmployee :(NSDictionary *)_employee {    

    // Create a new instance of the Employee entity.
    Employee *employee = (Employee *)[NSEntityDescription insertNewObjectForEntityForName:@"Employee" inManagedObjectContext:managedObjectContext];
    EmployeeDetails *employeeDetails = (EmployeeDetails *)[NSEntityDescription insertNewObjectForEntityForName:@"EmployeeDetails" inManagedObjectContext:managedObjectContext];

    // Add the new employee
    employee.firstName = [_employee objectForKey:@"first_name"];;
    employee.lastName = [_employee objectForKey:@"last_name"];;
/* --> */   employee.details = employeeDetails;  // Associate with details object

    // Add details
    employeeDetails.address    = [self getValue:[e objectForKey:@"street_address"]];   
    employeeDetails.cellPh     = [self getValue:[e objectForKey:@"cell"]];

    // Save the data
    NSError *error;
    if (![managedObjectContext save:&error]) {
        NSLog(@"core date save error: %@", error);
    }   
}