从关系数据(iOS)快速创建核心数据关系

时间:2011-10-25 13:56:23

标签: ios performance core-data

我正在使用Core Data来存储以“关系”形式发送的服务器的数据。

例如,我从服务器获得的数据看起来像这样(实际格式有些不同,但足够相似)

Users: [{PK: 1, Name: 'A B'}, {PK: 2, Name: 'C D'}, {PK: 3, Name: 'E F'}]
Posts: [{PK: 1, UserPK: 1, Content: '...'}, {PK: 2, UserPK: 3, Content: '...'}]

我的核心数据模型在用户和帖子之间设置了关系,它的工作方式应该如此。但是,当我从服务器收到一个新的数据集时,我的问题是尽可能快地创建这些对象及其关系(不使用大量的RAM)。

问题是将帖子与用户相关联。 “正常”的方法是基本上写post.user = user;但是,这需要我从磁盘加载user

我目前的计划是加载所有用户,对其进行故障并创建一个将PK映射到实际对象的NSDictionary。这样我就可以快速找到需要与帖子关联的用户。但是,这个解决方案看起来有点复杂,本质上应该是一个相当简单的操作。

2 个答案:

答案 0 :(得分:2)

您将用户保留在NSDictionary内存的解决方案是合理的。只要你把它们置于故障状态,它们就不应该占用太多的记忆。出错的MO 很小

答案 1 :(得分:0)

我有一个非常类似的情况,最终根本没有将数据导入到核心数据中,因为数百个数据对象的重复导入加上太慢的关系。事实证明,我为该格式编写的解析器足以实时读取数据(同时滚动tableviews等),所以我基本上只是将原始数据保存到磁盘。

解析器需要扩展,它现在输出类似于托管对象的数据对象,允许使用KVC查询原始数据。

我一直使用Core Data来保存用户编辑,并引入了一个数据管理器类来将两个数据源组合在一起。

不是你要求的,我猜,但也许它有帮助...