【问题标题】:Two Xcode projects, same target两个 Xcode 项目,相同的目标
【发布时间】:2017-11-22 14:07:54
【问题描述】:

我正在开发 iOS 应用的第 2 版。因为我用 Swift 重写它,所以我开始了一个新的 Xcode 项目。即使目标名称相同,我的设备或模拟器上也有两个不同的应用程序,因此它们不会共享数据和偏好等。

是否可以让两个不同的项目共享同一个目标?或者我应该蛮力替换原始项目文件夹中的所有内容(在三次备份之后:)?

【问题讨论】:

    标签: ios xcode target


    【解决方案1】:

    不,这是不可能的。更好地更新原始项目。

    【讨论】:

      【解决方案2】:

      我花了几天时间尝试了很多次来让它发挥作用,并在下面概述了我采取的步骤。希望这对其他人也有用。

      背景:为了学习 Swift 并使我的应用程序现代化,我决定完全重写它,使用 Swift 的所有优点和更新的 iOS API。我没有像许多教程中描述的那样慢慢地将一个类从 Objective C 转换为 Swift,而是从头开始。于是我新建了一个项目,与目标同名,添加了一些基本功能,在模拟器上运行。出乎我意料的是,一个新的应用程序被创建了,所以我有两个应用程序,一个是用 Objective C 编写的,一个是用 Swift 编写的。由于我的应用程序使用 Core Data,因此它们必须相同,否则用户在升级时将丢失所有数据。因此,经过大量试验和错误,我终于能够让它工作,以下是我使用的步骤:

      免责声明:使用风险自负 - 确保有备份,以便随时恢复。

      1. 确保两个项目都启用了 git。
      2. 为这两个项目进行备份。如果您使用 Dropbox 或类似的工具进行同步,请将其关闭。
      3. 在 ObjC 项目存储库中,创建一个“Swift”分支。
      4. 在 Xcode 中,将所有源文件从 Swift 项目导入到 ObjC 项目(在 Swift 分支上)。为了更轻松地进行内务管理,我建议将所有内容放在 Xcode 中的不同组中。
      5. 在 ObjC 项目(Swift 分支)的“构建阶段”下,删除所有与 ObjC 相关的源文件和链接的框架。
      6. 构建并运行。
      7. 您可能有一些与项目相关的错误,需要修复。例如,在我的情况下,Xcode 找不到 info.plist 文件,我不得不删除构建脚本。 YMMV。
      8. 在 git 上提交更改(仍在 Swift 分支上)。
      9. 在 Swift 和 ObjC 分支之间切换,并确保模拟器上确实只有一个构建并且它们共享数据(或任何特定于您的项目的数据)。

      如果您想拥有两个不同的项目,则可选:

      1. 切换到 Swift 分支并退出 Xcode。
      2. 复制整个项目文件夹并将其命名为 MyApp_Swift,但不要重命名目标和 pbxproj 文件。
      3. 打开原项目,切换回ObjC分支,运行测试。
      4. 打开复制的项目,切换到Swift分支,运行测试。
      5. 从新的 Swift 项目中删除(回收)所有与 ObjC 相关的文件,运行并测试。
      6. 退出 Xcode,并将 .git 文件夹从原始 Swift 项目文件夹移动到新的 Swift 项目文件夹。我是在终端中完成的。
      7. 打开新的 Swift 项目,运行并测试。如果一切正常,请提交更改。
      8. 切换回原项目的ObjC分支,运行测试。如果一切正常,你可以在 git 中删除 Swift 分支。
      9. 您现在应该有两个不同的项目,都在模拟器上使用相同的应用程序。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-03
        • 1970-01-01
        • 2020-11-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多