构建纯Swift可可触摸框架

Mot*_*oth 35 cocoa cocoa-touch swift xcode6

我正在使用Xcode-6探索Swift,到目前为止一直都很好,尽管我认为新的集合需要一些工作,因为我已经设法打破了编译器几次.

问题是我现在卡住尝试创建框架包然后在另一个项目中使用.项目构建没有问题,所有测试都成功通过.当我去创建Archive(我假设是必需的)时,我收到错误:

:0:错误:未找到基础Objective-C模块"Sample"

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

// In this header, you should import all the public headers of your framework using statements like #import <Sample/PublicHeader.h>
Run Code Online (Sandbox Code Playgroud)

这很好,除了我只使用了swift枚举,结构和类这个框架,因此没有.h文件存在.

任何人都可以对这一点有所了解,因为我找不到任何文件吗?

Aar*_*ron 24

编辑(7/27/2018)

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


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

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

稍微更新

工程师提到,制作分发框架并非不可能,只是它不受支持.

  • 这与Apple的文档直接冲突:https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html (4认同)
  • 那些文档仍然是"预发布",所以它可能会发生变化.此外,他们并没有说不可能构建一个框架并在一个单独的项目中使用它.他们只是说它不受支持.您是否尝试构建Swift Framework目标以用于其他项目? (2认同)

Jam*_*iel 11

我可以通过转到框架的目标并在Headers下的Build Phases选项卡上删除MyFramework.h文件来解决错误

然而,当我使用框架在包含应用程序和应用程序扩展之间共享代码时,我得到了"找不到底层Objective-C模块"错误,这两者都是纯粹的Swift.

在Headers下的Build Phases选项卡上显示MyFramework目标的MyFramework.h的图像