0

看起来我坚持计划我的核心数据模型结构的决定,因为我不太清楚核心数据在我的情况下需要如何工作。现在我有一个实体CustomerCity. 每个都有一些属性,现在它们之间没有关系。它们都与其他对象有许多关系,因此它们是完全独立的对象。在我的Customer实体中,我city有财产(客户所在的城市)。它的值需要与实体中的属性值name(城市名称)相匹配。City方案如下所示:在此处输入图像描述

别名对象City是通过从 web 解析 JSON 文件形成的,现在这部分工作正常。我在 NSManagedObject 子类(从实体生成)中添加了一个方法,用于从实体Customer中检索名称属性值City并将其存储在城市属性中:

- (City *)city 
{
     return (City *)[[PTDataFetchHelper sharedInstance] entityForName:@"City" withServerID:self.city_server_id inContext:[self managedObjectContext]]; 
}

这在没有关系的情况下工作,但是我的 UITableView(我使用 NSFetchedResultsController 之类的源)开始在这种获取中工作得非常慢。我也明白,使用这个方案我不能同时实现对象CustomerCity对象的搜索——我只能从一种实体中获取。我发现我可以为这两个创建父实体,但它们在逻辑和结构上是独立的。解决这两个问题的最佳架构方式是什么?任何意见表示赞赏。

4

1 回答 1

1

几点观察:

  • 您已刻意避免在模型之间CityCustomer模型中建立关系。根据我对您的要求的了解,我不确定为什么。您发表评论说您“在子类中添加了一个方法,NSManagedObject用于Customer从中检索名称属性值City并将其存储在city属性中。” 但这似乎不是您正在做的事情。您已经为city属性创建了一个 getter 方法,该方法在Customer每次调用时从上下文中动态获取城市名称。这可能是您报告速度缓慢的原因。

  • 可以创建一个NSFetchRequest遍历关系的。调查:

  • Customer并且City实际上在逻辑上并不独立,因为customerInstance.city必须始终是一个名称,cityInstance.name就像您现在所构建的那样。

于 2013-07-09T11:56:43.610 回答