在应用程序包中包含核心数据

时间:2010-11-02 15:24:34

标签: iphone objective-c core-data

我不确定我是否完全理解Core Data如何在iOS上运行。 我有一个大的JSON文件,我已经解析并导入核心数据。这会生成一个sqlite文件。我需要将此文件包含在应用程序中,但每次我从设备中删除应用程序时 - 我必须再次运行JSON解析脚本以在设备上创建新的sqlite文件。我希望能够从应用程序包中排除JSON文件,并且不想在首次使用时运行解析脚本。

我该怎么做呢?我做错了吗?

1 个答案:

答案 0 :(得分:4)

您需要创建sqlite文件(如果您愿意,可以使用您的应用程序),然后将其复制到您的项目中并使用该应用程序进行部署。当您的应用首次运行时,您还需要添加一些代码以将文件移动到文档目录中。如果文件不存在则可以是简单的,然后将其复制到脚本中。

NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *DB = [[paths lastObject] stringByAppendingPathComponent:@"myDB.sqlite"];
if (![fileManager fileExistsAtPath:DB]) {
    NSString *shippedDB = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"myDB.sqlite"];
    [fileManager copyItemAtPath:shippedDB toPath:DB error:&error];
    }

我使用这种方法发布预构建的sqlite文件,虽然我在CoreData管理sqlite文件时没有使用它。