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

标签 iphone objective-c core-data

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

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

最佳答案

您需要创建 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文件的时候没用过。

关于iphone - 在应用程序包中包含核心数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4079161/

相关文章:

ios - 与他人共享/邀请 CoreData iCloud 文档

ios - 过滤 Coredata 类型的数组

iphone - MKAnnotationView 自定义图像未显示

iphone - iPhone 与 Android 上的 Web 应用程序性能

ios - 我可以使用什么服务在 IOS 上快速发送推送通知

ios - 根据数据对数组进行排序

iphone - NSMutableURLRequest 偶尔出现 "no boundary"错误

ios - 如何在 NSOperationQueue 中取消 NSOperation 之前执行函数

iOS:从任何地方返回 Root View Controller

ios - 如何创建谓词来获取同一属性的所有不重复结果的实体?