自定义框架的“没有这样的模块”错误

„no such module“ error for custom framework

目标:

我想使用自定义框架,以便使某些方法和属性只能在框架内访问,而不能由应用程序的其他 classes 访问。

我做了什么:

我关注了this tutorial:出于测试的目的,我设置了一个新的框架项目,将1 class从原始项目复制到这个新项目,并制作了初始化程序和一些其他功能public。这个框架项目构建没有错误。

然后我从原始项目中删除了复制的 class。正如预期的那样,它不再构建并显示已删除 class 的“未声明类型”错误。

为了将框架项目作为子项目添加到原始项目中,我添加了框架项目的 xcodeproj 文件,并将框架 framework 文件作为嵌入式二进制文件添加到我的原始项目目标中,它会自动将其添加到“链接的框架和二进制文件”。最终,我将 import MyFramework 语句添加到使用已移至框架的 class 的相关 2 个文件中。

问题:

当我构建时,“未声明的类型”错误现在完全消失了,但我在导入语句中得到“没有这样的模块”错误。
这意味着框架的 public class 及其 public 功能对原始项目可见。
但是为什么我还是得到“没有这样的模块”错误?我应该怎么做才能解决我的问题?

PS:

我已经阅读了关于 SO 的“没有这样的模块”帖子,但是 none 似乎解决了我的问题。

编辑

我的一个朋友指出,引用的教程应用程序与我的应用程序有很大的不同。对不起,我没有提到这一点。我不知道它的相关性:

教程应用有一个目标,iOS,而我的应用有 2 个目标,iOS 和 watchOS。我移动到我的框架的 class 被两个目标使用。

由于我移至我的框架的 class 被两个目标使用,该框架也需要相同的目标,并且一次构建会产生两种产品,一种用于 iOS 的框架,另一种用于 iOS 的框架watchOS,请看下面我的回答。

在项目导航器中单击树顶部的项目。应该出现项目的设置,单击常规并向下滚动到页面底部。有两个部分 'Embedded Binaries' 和 'Linked frameworks and libraries'。按第二部分下方的 + 按钮,应会出现一个框架列表。 Select 你的框架。如果它自己不添加,这也应该将框架添加到 'Embedded Binaries'。完成此操作后,请验证框架是否依赖于您的项目。转到 'Build Phases' 并检查它是否存在于 'Target Dependencies' 中,如果是这样,您应该准备好了。

如果应用程序使用两个目标,比如 iOS 和 watchOS,并且框架 类 被两个目标使用,框架也必须有这两个目标,比如 MyFrameworkIOSMyFrameworkwatchOS

如果构建项目,两个目标共享的代码现在必须导入属于已编译目标的框架。这可以通过有条件地导入框架来完成,例如:

#if os(iOS)
    import MyFrameworkIOS
#else
    import MyFrameworkwatchOS
#endif