apr*_*mtz 0 sqlite core-data ios
我有以下要求:使用 .xml 文件中的数据创建并填充 SQLite 数据库,该文件可以随时具有不同的结构,因此我无法使用NSManagedObjectModelXcode 创建它,它必须在运行时创建。我已成功NSManagedObjectModel以编程方式创建了一个,创建了持久存储并使用 .xml 中的数据填充了 sqlite 文件。但是,下次我使用该应用程序时,持久存储与不兼容NSManagedObjectModel(我不想每次运行该应用程序时都重新创建模型,只是第一次)。有什么方法可以保存我以编程方式创建的模型并在下次需要时加载它?我在示例中看到的只是从NSBundle.
有什么方法可以保存我以编程方式创建的模型并在下次需要时加载它?
是的。NSManagedObjectModel符合NSCoding,这意味着您可以轻松地将其转换为 或从NSData,并且保存和读取NSData也很容易。
保存模型:
NSString *modelPath = // path where you want to save
NSData *modelData = [NSKeyedArchiver archivedDataWithRootObject:self.managedObjectModel];
[modelData writeToFile:modelPath atomically:YES];
Run Code Online (Sandbox Code Playgroud)
要读取已保存的模型:
if ([[NSFileManager defaultManager] fileExistsAtPath:modelPath]) {
NSData *savedModelData = [NSData dataWithContentsOfFile:modelPath];
NSManagedObjectModel *savedModel = [NSKeyedUnarchiver unarchiveObjectWithData:savedModelData];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
563 次 |
| 最近记录: |