构build纯粹的Swift Cocoa Touch Framework

我正在用Xcode-6来探索Swift,尽pipe我觉得新的集合需要一点点工作,因为我已经设法打破了几次编译器。

问题是我现在卡住了试图创build框架包, 然后在另一个项目中使用 。 该项目build设没有问题,所有的testing成功通过。 当我去创build存档(我认为是必需的)我收到错误:

:0:错误:底层Objective-C模块'示例'未find

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

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

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

任何人都可以阐明这一点,因为我找不到任何可用的文件呢?

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

Xcode 6目前不支持构build可分发的Swift框架,并且苹果可能不会将这个function构build到Xcode中,除非它们有利于他们这样做。 现在,框架意味着embedded到你的应用程序的项目中,而不是分布式的。 如果你看任何会议video或看到示例项目,这总是安排。 另外一个原因是Swift非常新,很可能会改变。 因此,基于Swift的框架不能保证在你最初构build的平台上工作。

轻微更新

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

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

但是,当我使用框架来共享包含应用程序和应用程序扩展之间的代码时,我得到了“底层Objective-C模块没有find”的错误,这两者都是纯Swift。

图片显示了标题下“构建阶段”选项卡上MyFramework目标的MyFramework.h

您可能会觉得这很有用: 创build纯粹的swift模块

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

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

假设您正在创build一个真正纯的Swift模块,您必须禁用Objective-C兼容性头文件和任何生成的接口头文件,以便编译器不会假设它可以find框架的Objective-C模块。 在这里输入图像说明

不要删除您的公共框架标题。 如果你这样做,你会在链接时间得到一个模块映射警告。

我认为这是XCode 6中的一个错误,或者苹果公司不允许在Xcode中testing框架。

如果编译到configuration文件XCode正确生成框架。 (请参阅在DerivedData中创build的发布文件夹)