在Core Data中预加载数据的最佳实践

时间:2012-01-11 15:34:41

标签: iphone ios core-data

  

可能重复:
  Way to Prepopulate Core Data with Certain Data

我需要一个建议:我开始开发一个应用程序来收集费用记录(coredata后端)。我需要部署带有3个预加载实体(类型,项目和类别)的应用程序,其关系与记录如下:

Record << - > Type” “Record << - > Item” “Record << - > Category

我打算在记录实体中插入/添加假对象,以尊重类型,项目和类别之间的记录关系;关系是可选的。

从长远来看,哪种方法可以加载这些列表及其关系?我已经阅读了几种方法,所以我有点困惑。

a)预先填充的数据库

b)解析xml / csv

c)在didFinishLaunchingWithOptionsviewDidLoad

处插入新对象

所有三个列表都在应用生命周期中加载一次;然而,该应用程序可能需要每3-6个月更新一次。 Item有200条记录,Type有3条记录,Category条有30条记录;所有纯文本。

我正在使用XCode4.2 Bulid 4C199。非常感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

我通常使用版本化数据库,其代码生成最新版本。它将插入或更新记录和列等,支持更新任何先前版本,例如

if (noversiontable) {
    create tables;
    create defaults;
    set version to 1;
} else {
    get version;
}
if (version == 1) {
   updates to version 2;
   set version to 2;
}
if (version == 2) {
   updates to version 3;
   set version to 3;
}
saveVersion;

有时我只是添加列,有时我会删除它们甚至更改数据类型并进行某种处理。例如,我可能有一个地址字段,并决定稍后添加地理编码。版本更新将包括处理现有记录并为它们运行地理编码。

答案 1 :(得分:0)

虽然预先填充的数据库通常最简单,但是您说您需要偶尔更新数据,这使我相信导入机制(您的选项b)值得与选项c一起实现Matt H的版本推荐。为此,我更喜欢JSON到xml或csv。它很容易使用KVC将每个结果字典复制到核心数据对象中。