在Core Data持久存储中发送静态(只读)数据的正确方法是什么?

时间:2010-01-07 03:59:17

标签: iphone sqlite core-data plist readonly

我想发送静态只读数据,以便在我的Core Data模型中使用。问题是存在明显不同的持久存储类型,我不知道这些类型的格式是否应该是不透明的,或者我是否应该能够手工构建它们。

现在我只有一个plist,它非常小(总共可能有30个条目)。

首次安装应用程序时,我是否应该编写代码将plist导入我的数据存储中,或者是否有某种方式可以发送数据存储文件的手工构建的初始版本?

(我正在使用默认的sqlite持久性存储。)

3 个答案:

答案 0 :(得分:3)

我不会尝试手工构建它,但您当然应该执行导入并保存最终的Core Data SQLite文件以随您的应用程序一起提供。

我计划编写一个小型mac实用程序(使用相同的数据模型)为我的iPhone应用程序生成Core Data SQLite文件(导入实际上来自Web服务器)。然后,我将该实用程序持久保存的文件添加到我的iPhone应用程序项目中。

答案 1 :(得分:1)

为了回答我自己的问题,我注意到Recipes示例代码应用程序附带了一个默认的sqlite后备存储:

// If the expected store doesn't exist, copy the default store.
if (![fileManager fileExistsAtPath:storePath]) {
    NSString *defaultStorePath = [[NSBundle mainBundle] pathForResource:@"Recipes" ofType:@"sqlite"];
    if (defaultStorePath) {
        [fileManager copyItemAtPath:defaultStorePath toPath:storePath error:NULL];
    }
}

但话又说回来,为了另一个目的,它在plist文件中附带了一些静态只读数据! (TemperatureData.plist)所以去图....

答案 2 :(得分:0)

没有多少人知道这一点,但您实际上可以在OSX上使用核心数据,然后在iOS上使用该存储文件。所以基本上写一些使用完全相同的模式和模型对象的代码(它们都应该在OSX上编译和工作)。

如果您了解iOS SDK,OSX开发并不是很难掌握: - )

HTH