9

我有 4 个不同的 XCode 项目,用于 git 的不同分支上的不同模块。我想制作一个通用的项目/应用程序,通过它我可以调用所有 4 个模块。有模块将像列表中的列表一样显示。通过一个公共登录,所有模块都将被调用。我怎样才能做到这一点?

到目前为止我所做的事情:我已经检查了所有模块并将它们添加到一个工作区中。但是如果不使它们成为框架,我就无法从通用项目中调用它们。我的模块也很大,要访问的框架类需要公开。那么没有其他好的方法可以做到这一点。希望我能够清除我的问题..

谢谢

4

5 回答 5

5

为了解决这个问题,您需要一个依赖管理解决方案,因为您希望对单个项目的更改自动反映在整个项目中。由于实际原因(框架类大小和访问级别),您已决定不能使用自然选择的框架。

解决方案是为您的源代码找到不同的依赖管理解决方案。

下一个最明显的选择是使用 git 子模块,因为它已明确设计用于在源代码级别进行模块化。如果您将此与@sjwarner 为项目组织建议的解决方案结合使用,您应该能够实现您所需要的。

https://git-scm.com/book/en/v2/Git-Tools-Submodules

“子模块允许您将 Git 存储库作为另一个 Git 存储库的子目录。这使您可以将另一个存储库克隆到您的项目中并保持您的提交分开。”

换句话说,您可以继续单独维护每个视图控制器,并且可以将提交包含到您的整个项目中。

(请注意,子模块本身不必是单独的项目,您可以仅将视图控制器单独设置为单独的子模块,但这可能会更复杂地设置和维护)

a) 如果包含视图控制器的每个项目都不是一个 git 存储库,则将其设为您想要的 git 存储库。

b) 为您的主项目创建一个 git 存储库(如果还没有的话)

c) 将每个项目作为 git 子模块添加到您的主 git repo

d) 遵循@sjwarners 对整个项目源代码组织的建议

于 2018-08-26T11:11:38.427 回答
2

我想您想说的是,从您的第一个应用程序中打开您的第二个应用程序上的特定视图控制器。您可以通过在 iOS 中使用 URL Scheme 来实现这一点。

  1. 进入您应用的 info.plst 文件。
  2. 向其中添加一行并将其称为“URL 类型”
  3. 展开“URL 类型”中的第一项并添加一个名为“URL 标识符”的行,该字符串的值应该是您的应用程序的反向域,例如“com.yourcompany.myapp”。
  4. 同样,在“URL 类型”的第一项中添加一行并将其命名为“URL 方案”
  5. 在“URL Schemes”中,您可以将每个项目用作您希望使用的不同 url,因此如果您想使用“myapp://”,您将创建一个名为“myapp”的项目

你的结构应该是这样的

检查这个链接,你会得到更好的理解,谢谢。 iOS 自定义 URL 方案

于 2018-08-23T11:56:01.297 回答
2

你上面说了

所有项目都是独立运行的项目

这表明您的 4 个项目中的每一个都将其源文件编译到应用程序中。

您似乎正在构建自己的新应用程序,因此您并不关心这四个项目中的每一个都在构建什么。您只关心源文件。

  • 忽略项目文件。
  • 找到.swift包含您感兴趣的对象的文件。
  • 将它们添加到您自己的项目中。
  • 建造。
于 2018-08-16T13:05:00.417 回答
0

您可以使用多 URL 方案概念来实现该功能。就像 Android 中的多风味概念一样

于 2018-08-20T17:56:44.450 回答
0

如果您的工作区中已经拥有作为项目所需的所有源文件,则需要创建一个新的目标框架,并将所需的控制器及其依赖项添加到框架中。(通过右侧面板的第一个选项卡或直接从构建设置)。将此框架添加到您的应用程序的依赖项中并导入它。小心你可能至少应该让你的控制器公开/开放(如果你需要子类化)

于 2018-08-28T04:20:03.293 回答