我有一个名为“Client”的实体,每个客户端都可以有多个“属性”。 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”方法的全部内容。谢谢,
答案 0 :(得分:2)
假设关系是双向的(即,从两侧定义反比关系),那么您呈现的示例之间没有功能差异。使用代码中最有意义的。如果您专注于Property
,请使用-[Property setClient:]
。同样,如果您的代码集中在-[Client addPropertiesObject:]
上,请使用Client
。
为完整起见,您还可以使用
Client *client = ...
Property *property = ...
[[client mutableSetValueForKey:@"properties"] addObject:property];
利用可变代理来实现密钥值编码中使用的多对多关系。最后一个选项可能应该避免使用上面的显式方法,因为Core Data可能会优化这些方法(实现细节;我不知道是否是这种情况)。