我有一个使用CoreData作为数据存储机制的应用程序,应用程序需要配置一些初始数据。为了设置初始数据,您有什么建议/您在做什么/如何做什么?
目前我正在以下列方式进行此操作(当应用程序第一次启动时):
SomeEntity *newEntity=[NSEntityDescription insertNewObjectForEntityForName:@"SomeEntity" inManagedObjectContext:context];
[newEntity setCode:@"a-code"];
[newEntity setName:@"a-name"];
...
[context save:nil];
我不喜欢这种做法有两个原因:
1)如果你需要超过10个实体实例来实现多个实体类型,那么它很无聊且容易出错
2)初始启动可能需要一些时间
在之前使用SQLite的应用程序中,我只将初始SQLite数据库链接到应用程序中,如果需要修改任何数据,请将数据库移动到Documents目录。 CoreData有没有类似的方法?
答案 0 :(得分:6)
这正是你对Core Data所做的。使用您的应用程序以您希望的方式创建数据,然后从设备下载数据。您将在Documents目录中找到一个SQLite文件(这是默认位置)。将SQLite文件作为资源添加到项目中。它会随您的应用一起被复制。
然后,您需要做的就是编写一些代码以确定启动时Documents文件目录中是否已存在文件。如果没有,您可以将文件从应用程序的包中复制到Documents目录,Core Data将打开它。您只需确保在NSPersistentStoreCoordinator
设置之前执行此操作。