【问题标题】:Xcode migrate Core Data to new Bundle IDXcode 将 Core Data 迁移到新的 Bundle ID
【发布时间】:2021-11-11 15:41:32
【问题描述】:

我想更改我的捆绑包 ID(只需将其设为小写),因为我在 App Store Connect 中设置的捆绑包 ID 都是小写的,但我在 Xcode 中的旧捆绑包 ID 有一个大写字母。在 Xcode 中更改它很简单,但是当我在我的设备上运行该应用程序时,它会安装一个重复的应用程序而不是替换旧版本(因为捆绑 ID 具有不同的大小写)。我正在使用 Core Data 进行数据持久性,并且由于我已经在自己的设备上测试应用程序一段时间并通过它添加数据,我真的很想保留我拥有的数据,但将其迁移到应用程序新的捆绑包 ID。

到目前为止,我发现的所有相关问题都只涉及更改捆绑 ID,而不涉及维护现有数据。有什么好办法吗?

【问题讨论】:

  • 您应该能够将数据文件从一个应用的存储复制到另一个应用的存储。真的与捆绑 ID 无关。
  • @Caleb 我不确定我是否理解。澄清一下,我使用的是相同的 .xcdatamodel 文件,因此设置核心数据模型不是我的问题。但是我一直在开发中使用我的应用程序,并且一直在向它添加数据(数据仅在我的应用程序安装时可用,因为它是用户特定的数据);这是我希望在我的应用程序安装中使用新的捆绑 ID 可用的数据(仅对我可用)。如果您要从我的手机中复制数据库文件并将其粘贴到具有更新的捆绑 ID 的应用程序的数据库中,您能否说明我在哪里可以找到这些文件?谢谢!
  • 我是说将旧应用程序(不是应用程序本身)的沙盒中的数据库文件(不是数据模型)复制到新应用程序的沙盒中。如果您希望将您的数据作为新应用程序的一部分分发给所有用户,那么您可以将其包含在应用程序的资源中并让您的应用程序在首次运行时安装它,或者其他什么,但我认为您不是这样的要求。
  • @Caleb 是的,复制实际数据是我需要做的,我只是不知道该怎么做。我按照汤姆的回答,效果很好。感谢您的帮助!

标签: ios swift xcode core-data


【解决方案1】:

如果您更改捆绑包 ID,那么就 iOS 而言,它是一个不同的应用程序。您有两个不同的应用碰巧具有相似的捆绑包 ID,但它们无法访问彼此的数据,就像任何两个随机应用一样。

如果你还没有发布你的应用,也就是说它还在开发中,你可以把旧版本的数据复制出来,然后上传到新版本。您将几乎完全使用the steps in this answer,除非您在确定副本正常工作之前不会删除该应用程序。通过这些步骤,您基本上可以将数据从一个版本复制到您的 Mac,然后将其从 Mac 复制到另一个版本。

如果您已经发布了您的应用程序,那就更复杂了。一种方法是使用旧 ID 更新应用程序,但启用应用程序组。让更新将其数据复制到共享的应用程序组文件夹中。然后使用新 ID 启用应用程序组并让它使用相同的共享文件夹。另一种方法是让两个版本通过一些在线服务(例如 CloudKit 或 Firebase)同步数据,这样当应用获取新 ID 时,它会通过同步获取新数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-24
    • 1970-01-01
    相关资源
    最近更新 更多