如何在核心数据中保存与另一个对象相关的对象?

时间:2012-05-04 14:19:59

标签: ios core-data ios5

我在一对一关系方面遇到困难。在最高级别,我有一对多的关系。我将使用典型的经理,员工,示例来解释我正在尝试做什么。为了更进一步,我试图向员工添加一对一的House关系。

我在为子类化NSManagedObject时为我创建的addEmployeesToManagereObject方法添加了员工没有问题。当我在表视图中选择一个Employee时,我设置了Employee类型的currentEmployee - 它在我的.h中声明。

现在我有了当前的员工,我想保存与当前员工相关的Houses实体属性。

我真正努力的部分是设置managedObjectContext并设置和保存相对于currentEmployee的houses属性。

我尝试了几件事,但这是我最后的尝试:

  

注意:employeeToHouse是为其创建的House类型的属性   当我将NSManagedObject

子类化时
House *theHouse = [NSEntityDescription 
                   insertNewObjectForEntityForName:@"House"
                   inManagedObjectContext:self.managedObjectContext];
// This is where I'm lost, trying to set the House
// object through the employeeToHouse relationship
self.currentEmployee.employeeToHouse

如何访问和保存房屋属性到currentEmployee?

1 个答案:

答案 0 :(得分:2)

由于House被设置为实体,因此可以将其视为数据存储中的表。如果确实如此,则需要在数据模型中的Employee和House之间建立1对1的关系。

如果你已经这样做了,那就像打电话一样简单。虽然我对核心数据的一对一关系并不像我和许多人那样熟悉。在任何一种情况下,请尝试以下之一

[self.currentEmployee addHouseObject: theHouse];

self.currentEmployee.employeeToHouse=theHouse;

然后保存到managedObjectContext:

NSError *error=nil;
if (![self.managedObjectContext save:&error]{

    NSLog(@"Core Data Save Error:  %@", error);
}

此外,我不确定您的具体情况,但您的self.managedObjectContext应该与self.currentEmployee.managedObjectContext指向的相同。

祝你好运,