2011-10-25 277 views
2

我正在使用核心数据来存储以“关系”形式发送的服务器的数据。从关系数据(iOS)快速创建核心数据关系

比如,我从服务器获取的数据看起来是这样的(实际的格式有所不同,但足够相似)

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

你保持用户存储在NSDictionary的解决方案是合理的。只要你把他们置于故障状态,他们就不应该留下太多的回忆。故障的MO是微小的

0

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

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

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

不太你问什么,我猜想,但也许它可以帮助...