2010-10-14 101 views
0

我有一个名为“客户端”的实体,每个客户端可以有多个“属性”。 CoreData为我添加一个新的属性给我的客户端类创建方法,但我不明白这个的目的。有没有在所有任何区别:在CoreData中创建新的多对多关系的正确方法是什么?

Property *newProperty = [NSEntityDescription insertNewObjectForEntityForName:@"Property" inManagedObjectContext:self.managedObjectContext]; 
newProperty.name = @"[New Property]"; 
newProperty.client = self.currentClient; 

这:

Property *newProperty = [NSEntityDescription insertNewObjectForEntityForName:@"Property" inManagedObjectContext:self.managedObjectContext]; 
newProperty.name = @"[New Property]"; 
[self.currentClient addPropertiesObject:newProperty]; 

据我所知,这两个做同样的事情;他们只是将我的新房产与正确的客户相关联。一个比另一个更受欢迎;有没有什么区别?我只是想确保我不会错过自动生成的“addPropertiesObject”方法的整个点。谢谢,

回答

2

假设关系是双向的(即,相反的关系从两侧所定义),那么有你本实施例之间没有功能上的差异。在代码中使用最有意义的内容。如果您专注于Property,请使用-[Property setClient:]。同样,如果您的代码感觉集中在Client上,请使用-[Client addPropertiesObject:]

为了完整起见,你也可以使用

Client *client = ... 
Property *property = ... 
[[client mutableSetValueForKey:@"properties"] addObject:property]; 

这使得利用可变代理为一对多的关系,在键 - 值编码使用。最后一个选项可能应该避免使用上面的显式方法,因为Core Data可能会优化这些方法(实现细节;我不知道是否是这种情况)。

+0

谢谢!我会坚持我当时所做的; newProperty.client = self.currentClient,因为它感觉更简单,它不是对Client类或视图中的某些内容的响应。 – GendoIkari 2010-10-14 20:08:01

相关问题