我有以下要求:使用 .xml 文件中的数据创建并填充 SQLite 数据库,该文件可以随时具有不同的结构,因此我无法使用 Xcode 创建 NSManagedObjectModel
,它必须在运行时。我已经以编程方式成功创建了一个 NSManagedObjectModel
,创建了持久存储并使用 .xml 中的数据填充了 sqlite 文件。但是,下次我使用该应用程序时,持久存储与 NSManagedObjectModel
不兼容(我不想每次运行该应用程序时都重新创建模型,只是第一次)。有没有办法保存我以编程方式创建的模型并在下次需要时加载它?我在示例中只能看到从 NSBundle
加载的模型。
最佳答案
Is there any way to save the model I created programmatically and load it the next time it is needed?
是的。 NSManagedObjectModel
符合NSCoding
,这意味着您可以轻松地将其转换为/自NSData
,并保存和读取NSData
很简单。
保存模型:
NSString *modelPath = // path where you want to save
NSData *modelData = [NSKeyedArchiver archivedDataWithRootObject:self.managedObjectModel];
[modelData writeToFile:modelPath atomically:YES];
读取保存的模型:
if ([[NSFileManager defaultManager] fileExistsAtPath:modelPath]) {
NSData *savedModelData = [NSData dataWithContentsOfFile:modelPath];
NSManagedObjectModel *savedModel = [NSKeyedUnarchiver unarchiveObjectWithData:savedModelData];
}
关于ios - 是否可以保存 NSManagedObjectModel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22649162/