35

我正在使用 Xcode-6 探索 Swift,到目前为止一切都很好,尽管我认为新的集合需要一些工作,因为我已经成功地破坏了编译器几次。

问题是我现在一直在尝试创建框架包,然后在另一个项目中使用。项目构建没有问题,所有测试都成功通过。当我去创建存档(我认为这是必需的)时,我收到错误:

:0: 错误:未找到底层 Objective-C 模块“示例”

现在我认为这与我的 Sample.h 的内容有关,它告诉我

// In this header, you should import all the public headers of your framework using statements like #import <Sample/PublicHeader.h>

这很好,除了我只为这个框架使用了快速枚举、结构和类,因此不存在 .h 文件。

由于我找不到任何可用的文档,任何人都可以对此有所了解吗?

4

5 回答 5

24

编辑(2018 年 7 月 27 日)

以下答案中的信息可能不再准确。你的旅费可能会改变。


我和一位工程师坐下来问了这个确切的问题。这是他们的回应:

Xcode 6 目前不支持构建可分发的 Swift 框架,Apple 很可能不会将此功能构建到 Xcode 中,直到这样做对他们有利。现在,框架旨在嵌入到您的应用程序项目中,而不是分发。如果您观看任何会议视频或查看示例项目,这始终是安排。另一个原因是 Swift 非常新并且很可能会改变。因此,您的基于 Swift 的框架不能保证在您最初构建它的平台上工作。

轻微更新

工程师提到做一个分发框架也不是不可能,只是不支持。

于 2014-06-06T01:01:30.323 回答
11

通过转到框架的目标并在标题下的构建阶段选项卡上,我能够克服错误,删除 MyFramework.h 文件

但是,当我使用框架在包含应用程序和应用程序扩展之间共享代码时,我遇到了“找不到底层 Objective-C 模块”错误,这两个都是纯 Swift。

图像显示标题下的构建阶段选项卡上 MyFramework 目标的 MyFramework.h

于 2014-07-16T19:16:32.487 回答
3

假设您正在创建一个真正纯 Swift 模块,您必须禁用 Objective-C 兼容性标头和任何生成的接口标头,这样编译器就不会假设它可以找到框架的 Objective-C 模块。在此处输入图像描述

不要删除您的公共框架标头。如果这样做,您将在链接时收到模块映射警告。

于 2015-06-07T06:32:48.477 回答
2

您可能会发现这很有用:Creation of pure swift module

简而言之:可以制作静态框架,但有一个问题:如果包含“ProjectName-Swift.h”标头,它在最终用户的项目中不起作用。

但是,如果你只使用 swift,它就可以正常工作。

于 2014-07-29T08:08:41.850 回答
0

我认为这是 XCode 6 中的一个错误,或者 Apple 不允许在测试版中从 XCode 归档框架。

如果您编译以分析 XCode 会正确生成框架。(参见 DerivedData 中创建的 Release 文件夹)

于 2014-06-08T12:39:24.677 回答