2011-10-21 27 views
0

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

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

我能够存储新员工并在需要时取回他们。我的问题是,如何在存储员工的同时存储匹配的employeeDetails,以及如何在提取中检索匹配员工的详细信息?

感谢您提供的任何帮助。

+1

如果你总是有一个employeeDetail,它是1:1,为什么它是一个单独的实体? – Stu

+0

因为我在内存中保留了一大组员工数据,只有在点击员工行才能查看详细信息时才需要访问详细信息。 – RickR

回答

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); 
    } 
}