如何在全球范围内导入Swift框架?

我想有一种方法可以在每个课程中导入我的Swift Cocoapods,我怎样才能做到这一点?

我尝试了很多东西,但都没有工作。 以下是我没有尝试过的一些方法,如果find了解决问题的方法,

有一个像UIKit一般的import声明,把一切在那里。 (编辑:这失败了)

以某种方式将Swift框架放入Obj-C briding头文件中并将其导入。

Swift强烈build议不要这样做,因为这会引入模块之间的隐式耦合。

但是,您可以通过在导入其他模块的模块中声明一个typealias来使全局可用的符号可用:

 import ModuleName public typealias ClassName = ModuleName.ClassName 

没有办法做到这一点。 这不是一个bug,这是一个语言function(到目前为止,就像Swift 2.2一样)。

Swift使用模块 (Apple在Objective-C的Xcode 5中介绍了它们),每个文件都是一个语义单元,因此您需要明确告知Xcode哪些模块暴露给定义的文件。

不仅没有你所描述的行为的支持,但你也不应该试图绕过它。 使用不必要的(未使用的)模块理论上可以产生较慢的代码(考虑到编译器将这些信息用于优化过程)。

您应该可以通过在导入之前添加@_exported来全局导入它。

@_exported import Podname

但是,就像之前提到的海报一样,这不被推荐。

你不想这么做的原因是:

想象一下,如果两个框架都使用相同的方法名称 ,那么编译器将不知道应该运行哪种方法。

要了解更多信息,请参阅此问题

从Swift4开始:

  • 正在一个Swift项目中
  • 想要全球导入另一个Swift项目(并使用cocoapods)

我只是设法通过添加以下行到我的桥接头:

 #import <PodName/PodName-Swift.h> 

这种做法有多好/好? 不知道,但我只是想在我的项目全球可用的一些扩展。 这个伎俩。