【问题标题】:Core Data lightweight migration renamed property keep renaming id all the time?Core Data轻量级迁移重命名属性一直重命名id?
【发布时间】:2013-11-04 16:39:09
【问题描述】:

我正在使用 xcode 5 为 iPhone 开发应用程序,我使用轻量级迁移来更新 Core Data 架构。

我在模型版本 1 中创建了一个用户实体,User 有一个名为 nameA 的属性。

在模型版本 2 中,我将 UsernameA 重命名为 nameB,我将 nameB 的重命名 ID 设置为 nameA。这一步成功了,nameA之前的值可以在nameB中找到。

然后我创建模型版本 3 以添加另一个名为 House 的实体,我发现在版本 3 中,UsernameB 仍然将其重命名 id 设置为 nameA

我认为在模型版本 3 中,UsernameB 不应该有重命名 id,因为模型版本 3 是基于版本 2,而在版本 3 中我没有更改任何 User 实体

那么我应该删除UsernameB的重命名id吗?还是直接放在那里?

有人知道怎么做吗?

【问题讨论】:

    标签: ios core-data xcode5


    【解决方案1】:

    你应该把它放在那里。您的用户可能尚未升级到核心数据架构的第 2 版。当这些用户从 v1 升级到 v3 时,他们需要知道如何从 nameA 迁移到 nameB

    【讨论】:

      【解决方案2】:

      如果您使用轻量级迁移,则根本不应该编辑迁移方案。轻量级迁移的全部意义在于您不必关心重命名 id 和其他类似的事情 - 它是自动的!

      这是您的工作流程:

      • 创建一个新版本
      • 激活它
      • 更改您的模型
      • 对于后续版本,重复上述操作

      就是这样。您描述的更改(它们都是轻量级兼容的)应该可以正常工作。

      【讨论】:

      • 我认为你错了。根据核心数据模型版本控制和数据迁移编程指南,轻量级迁移一章,我们应该在重命名属性时设置重命名 id。我的问题更进一步。谁能帮忙???
      • 也许您应该将您的问题(包括this one)合并为一个,并明确您真正想要实现的目标和无效的目标。
      • 你好,蒙迪!我只想知道在第 3 个数据模型版本中重命名 id 应该设置什么值。苹果的文档没有讲这种情况,恐怕以后会出问题。此外,我注意到苹果文档中的这句话:“重命名标识符创建了一个“规范名称”,因此您应该将重命名标识符设置为源模型中的属性名称(除非该属性已经具有重命名标识符)。这让我更加困惑,也就是说如果我在数据模型版本 3 中将 nameB 更改为 nameC,我不应该设置 nameC 的重命名 id?
      • 我问这个问题here是为了证实我对轻量级迁移过程的猜想。如果我的猜想是正确的,我认为应该清除在第 3 个数据模型中重命名 nameB 的 id。那么xcode填充的默认值是错误的。
      猜你喜欢
      • 1970-01-01
      • 2016-08-24
      • 2011-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-22
      • 1970-01-01
      相关资源
      最近更新 更多