NSBundle 中的 CoreData sqlite 文件

Posted

技术标签:

【中文标题】NSBundle 中的 CoreData sqlite 文件【英文标题】:CoreData sqlite file in NSBundle 【发布时间】:2016-08-07 00:21:44 【问题描述】:

我有一个 JSON 文件。大小约为 20MB。

项目 1。 因此,我创建了一个项目并将该 JSON 文件中的数据导入 Core Data。 Core Data 创建以下 sqlite 文件:整个数据列表.sqlite、整个数据列表.sqlite-shm 和整个数据列表.sqlite-wal。 将整个内容从 JSON 复制到核心数据并创建一次性文件需要 10 分钟。

现在在 Project2 中。 我复制了MainBundle中的所有三个文件。我必须创建.xcdatamodeld,就像我直接从Project1复制它一样,它没有找到.momd文件。

    NSURL *storeURL = [[NSBundle mainBundle] URLForResource:@"entireDataList" withExtension:@"sqlite"];
    store =[[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedModel]];
    NSError *error;
[store addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error];

那么,NSBundle mainBundle 中的 storeURL 是一种可靠的方法吗,其中存储了整个数据列表.sqlite、整个数据列表.sqlite-shm 和整个数据列表.sqlite-wal 文件?

通常它们在文档目录中。

【问题讨论】:

所以目的是这是启动应用程序的种子数据,但它可以由用户编辑并保存编辑? 是的,就像没有用户输入一样。我也指出了这个。也就是说,我能读但不能写? 【参考方案1】:

一般来说,您应该在首次启动时将包中的文件复制到文档文件夹中,然后从那里打开它们。然后,此方法将允许您编辑文件的内容并保存更新。

【讨论】:

以上是关于NSBundle 中的 CoreData sqlite 文件的主要内容,如果未能解决你的问题,请参考以下文章

[NSBundle allBundles] 中未出现单独的 CoreData 模型

NSBundle 不同文件夹中的两张图片同名

NSBundle 中的类

NSBundle 中的 NSTask

UIStoryboard() 中的 nil 和 NSBundle 有啥区别?

Objective-C 中的 NSBundle 沙盒