两个Xcode项目,相同的目标

时间:2017-11-22 14:07:55

标签: ios xcode target

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

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

我花了几天时间和许多人试图让这个工作,并在我采取的步骤下概述。希望这对其他人也有用。

背景:为了学习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分支)中的“Build Phases”下,删除所有与ObjC相关的源文件和链接框架。
  6. 构建并运行。
  7. 您可能遇到一些与项目相关的错误,需要解决此问题。例如在我的情况下,Xcode找不到info.plist文件,我不得不删除一个构建脚本。 YMMV。
  8. 在git上提交更改(仍在Swift分支上)。
  9. 在Swift和ObjC分支之间切换,确保模拟器上确实只有一个构建版本,并且它们共享数据(或任何特定于您项目的内容)。
  10. 如果您想要两个不同的项目,则可选:

    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. 您现在应该有两个不同的项目,它们都在模拟器上使用相同的应用程序。