无法找到子项目(框架)中的模块

时间:2017-07-18 16:08:01

标签: ios xcode swift3 xcode8 subproject

我正在使用XCode 8 + Swift 3。

我创建了一个名为" MyApp"的全新iOS项目。 然后,我创建了一个Cocoa touch 框架项目,名为" MySubProject"。 (我们的想法是让 MyApp 项目访问 MySubProject 代码。)

它们位于同一级文件夹中:

- MyApp/
- MySubProject/

MySubProject 中,我在服务组/文件夹下有一个MyService.swift文件(MyService类):

enter image description here

代码非常简单:

import Foundation
public class MyService {
    public func greeting() -> String {
        return "Hello my service!"
    }
}

MyApp 中,我将MySubProject.xcproject添加到 MyApp 项目中作为 MyApp 下的子项目:

enter image description here

然后,我将MySubProject/Products/下的 MySubProject.framework 拖放到MyApp项目的General - >中。嵌入式二进制文件和链接的框架和库:

enter image description here

现在,在MyApp/ViewController.swift下,我从MyService导入MySubProject类: enter image description here

但是当我构建MyApp项目时,我总是遇到编译器错误" 没有这样的模块' MyService' "如上图所示。

为什么呢?如何让 MyApp 能够访问 MySubProject 代码?

3 个答案:

答案 0 :(得分:2)

导入MySubProject!不是我的服务...在该应用程序的复制框架之后,请看快照。我无法发布图片。 snapshot

答案 1 :(得分:0)

MySubProject是否启用了“定义模块”设置?

答案 2 :(得分:0)

修改
您可以检查以下几项内容:

要在您的主项目中找到,您的框架必须编译到同一目标,即如果您的主项目以iOS为目标,您的子项目也必须将iOS作为目标(而不是,例如watchOS)。 /> 在项目导航器中激活项目。这将显示包含项目和目标设置的窗格。激活目标并选择“常规”选项卡。在“部署信息”下,您可以检查目标类型。

要在主项目中导入,必须在主项目开始构建时构建框架,即必须按照正确的顺序进行构建。
可以适当地选择此序列:在Xcode窗口的顶部栏(最左边有红色/黄色/绿色窗口控制按钮的那个)中,停止按钮的右侧是一个字段,其中左侧是活动方案,右侧是所选设备。单击该方案将打开一个子菜单。选择编辑方案(这也可以通过产品/方案/编辑方案从Xcode主菜单完成)。在左窗格中选择“构建”。在右侧,您将看到目标。它们将从上到下构建。因此,您的框架必须位于最前面,因为您的主项目在开始构建时需要导入。您可以通过相应拖动目标来更改序列。

还有一件事:在目标之上,有一个复选框“Parallelize Build”。这一定不能检查!如果选中它,您的主项目和子项目可以同时构建,这将无法工作,因为子项目必须在主项目开始构建时完全编译。

而且,最终,您必须导入您的框架(如本答案中建议的hasayakey,+ 1),而不是框架的特定文件。

以前的建议
您的子项目文件“MyService”(或者它被称为)是否已启用“MyService”的目标成员资格?