gpt4 book ai didi

core-data - 我需要做什么才能让 Core Data 自动迁移模型?

转载 作者:行者123 更新时间:2023-12-02 21:34:27 25 4
gpt4 key购买 nike

我已阅读有关核心数据模型自动/轻量级迁移的文档 - 但我在实现它时遇到问题。

据我了解,应用程序应该注意到它拥有的模型和设备上已经存在的模型不相同。如果您仅添加了属性或关系以及类似的简单更改,那么模型应该会自动升级。

任何指示 - 我需要在 Xcode 中设置某些内容吗?

最佳答案

我现在发现这非常简单 - 一旦你知道去哪里寻找。

在我的 AppDelegate 中,我设置了 NSPercientStoreCoordinator - 您需要向其添加一些选项以告诉它处理自动迁移:

NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:

[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,

[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];

NSError *error;
_persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel: [self managedObjectModel]];

if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:options error:&error]) {
// Handle error
NSLog(@"Problem with PersistentStoreCoordinator: %@",error);
}

那么你需要在 xCode 中做一些小技巧:

  1. 选择您的 xcdatamodel 文件
  2. 选择顶部的“设计”菜单 - 然后选择“数据模型” - 然后选择“添加模型版本”
  3. 然后,您的 xcdatamodel 文件将被移动到一个与您的 xcdatamodel 文件同名但扩展名为 xcdatamodeld 的新目录中 - 该目录中将有第二个文件,名称中带有 2。选择新文件,然后选择“设计”->“数据模型”->“设置当前版本”( in Xcode 4 you do this )
  4. 如果您已经进行了导致项目不兼容的更改,请从原始 xcdatamodel 文件中删除这些更改。如果您尚未进行更改 - 那么只需编辑 2.xcdatamodel 文件(您刚刚创建的当前版本)。
  5. 现在,当您将此版本安装到具有旧型号的设备上时 - 它会自动将该型号升级到新型号。

这看起来很棒并且像我想要的一样简单 - 但我认为您在开发过程中更改模型时需要小心 - 否则您将必须为每次更改创建一个新版本。

我认为我要做的是保留所有更改的文件,然后一旦准备好部署更新,我将删除所有中间文件并仅使用最旧和最新的模型进行部署。

<小时/>

更新(2011 年 7 月 15 日):

感谢@rockstarberlin指出苹果有更新的文档:

Xcode 4: Setting a Managed Object Model’s Current Version

更新:2013 年 8 月 19 日更好的链接:

https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreDataVersioning/Articles/vmModelFormat.html

关于core-data - 我需要做什么才能让 Core Data 自动迁移模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1018155/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com