找不到子项目(框架)的模块

Module from sub-project (framework) can't be found

我正在使用 XCode 8 + Swift 3.

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

它们在同一层文件夹中:

- MyApp/
- MySubProject/

MySubProject 中,我在服务 group/folder 下有一个 MyService.swift 文件(它是 MyService class):

代码很简单:

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

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

然后,我将 MySubProject/Products/ 下的 MySubProject.framework 拖放到 MyApp 项目的 General --> Embedded Binaries and Linked Framework and Libraries:

现在,在 MyApp/ViewController.swift 下,我从 MySubProject 导入 MyService class:

但是当我构建 MyApp 项目时,我总是得到编译器错误“No such module 'MyService'”,如上图所示。

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

MySubProject 是否启用了 "Defines Module" 设置?

编辑:
您可以检查几项内容:

要在你的主项目中找到,你的框架必须编译到相同的目标,即如果你的主项目有 iOS 作为目标,你的子项目也必须有 iOS 作为目标(而不是,例如 watchOS)。
在项目导航器中激活项目。这会显示一个包含项目和目标设置的窗格。激活您的目标和 select 常规选项卡。在 Deployment Info 下,您可以检查目标类型。

要在您的主项目中导入,您的框架必须在您的主项目开始构建时构建,即必须以正确的顺序完成。
可以适当地选择此序列:在Xcode window的顶部栏中(red/yellow/green window控制按钮最左侧),停止按钮的右右为左侧为活动方案,右侧为所选设备的字段。单击该方案会打开一个子菜单。 Select 编辑方案(这也可以通过 Product/Scheme/Edit 方案从 Xcode 主菜单完成)。 Select 在左窗格中构建。在右侧,您将看到您的目标。它们将从上到下构建。因此,您的框架必须放在最前面,因为您的主项目在开始构建时需要导入它。您可以通过相应地拖动目标来更改顺序。

还有一件事:在目标上方,有一个复选框"Parallelize Build"。这个一定不能查!如果勾选,你的主工程和你的子工程可以同时编译,这是不行的,因为子工程必须在主工程开始编译的时候编译完整。

并且,最终,您必须导入您的框架(正如 hasayakey 在这个答案中建议的那样,+1),而不是框架的特定文件。

之前的建议:
您的子项目文件“MyService”(或无论如何调用)是否为“MyService”启用了目标成员资格?

导入我的子项目!不是我的服务...在将框架复制到应用程序之后,请查看快照。我无法 post 图片。 snapshot