如何将 2 个属性从我的 App Store 版本交换到我当前的开发版本?

Posted

技术标签:

【中文标题】如何将 2 个属性从我的 App Store 版本交换到我当前的开发版本?【英文标题】:How can I exchange 2 attributes from my App Store version to my current development version? 【发布时间】:2013-01-23 10:08:07 【问题描述】:

如何将我的 App Store 版本中的 2 个属性交换为我当前的开发版本? 问题是我没有更改数据模型,因此没有数据模型迁移。 我尝试添加一个新的数据模型版本(与上一个版本相比没有任何变化),创建一个映射模型和一个自定义实体迁移策略,在 createDestinationInstancesForSourceInstance 中执行此属性交换。 它不起作用,因为永远不会调用迁移。经过一些测试,我只在第二个数据模型不同但不相等时才调用它,这就是我想要的。 你有什么想法或建议吗? 我唯一的想法是创建一个虚拟属性或类似的东西来创建一个不同的数据模型,这将强制启动迁移过程。 非常感谢。 里卡多。

【问题讨论】:

您是否将新的数据模型版本标记为活动版本? 是的。我认为核心数据知道我并没有真正改变我的数据模型,然后它就跳过了迁移。不确定。 【参考方案1】:

如果您不更改数据模型,则迁移功能不是您想要的。这就像用大炮向麻雀射击。

只需保留一个用户偏好标志来检查属性是否已更新。或者,您可以通过 fetch 进行检查。

然后只需“手动”更新属性,可能在applicationFinishedLaunching

if (needsUpdate) 
   // fetch the concerned entities
   // iterate through fetchedObjects and change the concerned attributes

[self.managedObjectContext save:&error]; 

为了安全起见,您可以使用 NSManagedObjectContexts performBlock: 在单独的线程上执行此操作。

【讨论】:

谢谢蒙迪。这正是我对迁移的看法。我在您的解决方案中看到的问题是您可以多次应用该更新,与您发布的更新一样多。换句话说,必须有某种版本控制。也许针对 CFBundleVersion 进行测试,但据我所知,不可能获得即将由用户更新的捆绑版本。也许添加一个虚拟属性是最实用的方法,因为模型映射是连续应用的,一个接一个,用于特定版本。你怎么看? 如前所述,这是矫枉过正。如有必要,保留版本用户首选项。如果您坚持使用迁移基础架构,只需 重命名 一个属性,迁移就会触发。确保全局替换代码中的属性名称。

以上是关于如何将 2 个属性从我的 App Store 版本交换到我当前的开发版本?的主要内容,如果未能解决你的问题,请参考以下文章

iOS,App Store Connect:如何将 2 个应用程序目标部署到应用商店连接?

有没有办法在不离开 App 的情况下将评分发送到 App Store?

Mac App Store - 无法保存文件

App Store 提交的版本号问题

如何在 App Store Connect 中更新其他人的 iOS TestFlight 版本?

我可以知道我的应用下载的 iOS App Store 的地区吗?