看起来我很难决定规划我的核心数据模型结构,因为我不太了解核心数据在我的情况下需要如何工作。现在我有一个实体Customer
和City
。每个都有很少的属性,现在没有关系。它们与其他对象有很多关系,因此它们是完全独立的对象。在我的Customer
实体中,我有city
属性(客户所在的城市)。它的值需要与name
实体中的属性City
(城市名称)的值相匹配。 Scheme如下所示:
通过从Web解析JSON文件来形成City
是别名的对象,现在这部分工作正常。我在Customer
的NSManagedObject子类(从实体生成)中添加了一个方法,以从City
实体检索name属性值并将其存储在city属性中:
- (City *)city
{
return (City *)[[PTDataFetchHelper sharedInstance] entityForName:@"City" withServerID:self.city_server_id inContext:[self managedObjectContext]];
}
这没有关系,但是我的UITableView(我使用NSFetchedResultsController,如源代码)开始使用这种提取工作非常慢。另外我理解使用这个方案我无法实现Customer
和City
对象的搜索 - 我只能从一种实体中获取。我发现我可以为这两个创建父实体,但它们在逻辑上和结构上是独立的。解决这两个问题的最佳建筑方法是什么?
任何评论都赞赏。
答案 0 :(得分:1)
一些观察结果:
您已经刻意避免在模型中设置City
和Customer
之间的关系。我不确定为什么根据我对你的要求的理解。您发表评论时“在NSManagedObject
的{{1}}子类中添加了一个方法,以便从Customer
检索名称属性值并将其存储在City
属性中。” 但这不是你正在做的事情。您已为city
上的city
属性创建了一个getter方法,该方法在每次调用时都会从上下文中动态获取城市名称。这可能是您报告缓慢的原因。
您可以创建遍历关系的Customer
。请看:
NSFetchRequest
和Customer
实际上并不是逻辑上独立的,因为City
必须始终是customerInstance.city
的名称,因为您现在已经构建了它。