现有项目问题的核心数据

时间:2011-07-14 10:58:24

标签: sqlite core-data migration

我正在使用sqlite迁移核心数据作为persistentStoreCoordinator,核心数据模型,实体,我创建了一切,但现在我的问题是我不知道如何让Core Data将初始数据文件写入文件我放入mainBunddle。并且总会出现这样的错误:

-[NSKeyedUnarchiver initForReadingWithData:]: data is empty; did you forget to send -finishEncoding to the NSKeyedArchiver?
2011-07-14 17:37:59.409 SalePersonApp[1202:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSMutableArray insertObject:atIndex:]: attempt to insert nil object at 0'

当我将我的上下文分配给appDelegate上下文时:

SalePersonAppAppDelegate *app = [[UIApplication sharedApplication] delegate];
        NSManagedObjectContext *context = app.managedObjectContext;

错误发生在第二行。

现在我的sqlite文件是空的,因为据我所知,我不知道如何让Core Data将我的实体写回sql文件。

任何人都可以告诉我如何做到这一点。非常感谢提前。

1 个答案:

答案 0 :(得分:0)

如果您将持久性存储放在应用程序包中,那么它永久只读,因为应用程序包中的所有内容都是只读的。

要创建可写商店,您需要在包中的某个应用目录中创建商店,通常是DocumentsLibrary

如果需要提供预先填充的持久性存储,请在Xcode中运行时使用Core Data填充存储。然后将持久性存储文件本身添加到构建目标,以便将其写入应用程序包。应用程序第一次运行时,将持久性存储从应用程序包复制到其中一个可写目录。然后照常打开副本。