我希望有一种方法可以在每个班级全局导入我的Swift Cocoapods,我该如何实现?
我尝试了很多东西而且没有用。以下是一些我没有尝试过的方法,如果找到了解决方法,可能会想到这些方法:
拥有像UIKit这样的一般导入语句,并将所有内容放在那里。 (编辑:失败)
以某种方式将Swift框架放在Obj-C briding header中并导入那里的东西。
答案 0 :(得分:28)
在Swift中强烈反对,因为这会在模块之间引入隐式耦合。
但是,您可以通过在导入其他模块的模块中声明typealias
来全局使用某个符号:
import ModuleName
public typealias ClassName = ModuleName.ClassName
答案 1 :(得分:24)
您应该可以通过在导入之前添加@_exported来全局导入它。
@_exported import Podname
然而,就像之前提到的海报一样,不推荐这样做。
答案 2 :(得分:13)
从Swift4开始:
我只是通过在我的桥接标题中添加以下行来设法做到这一点:
#import <PodName/PodName-Swift.h>
这种做法有多好/坏?不确定,但我只想在我的项目中全局提供一些扩展。这就行了。
答案 3 :(得分:9)
没有方法可以做到这一点。这不是一个错误,这是一个语言功能(到目前为止,谈到Swift 2.2)。
Swift使用模块(Apple在Xcode 5中为Objective-C引入了它们),每个文件都是语义单元,因此您需要明确告知Xcode哪些模块暴露给定义的文件。
不仅不支持您描述的行为,而且您也不应该试图绕过它。使用不必要的(未使用的)模块理论上可以产生较慢的代码(考虑到编译器将此信息用于其优化过程)。
答案 4 :(得分:3)
您可以通过以下方式手动实现相同的功能:
#import <UIKit/UIKit.h>
添加到Objective-C桥接标头文件中(这样就不必为每个.swift文件重复此操作)。对于吊舱,您必须喜欢#import <SwiftyJSON/SwiftyJSON-umbrella.h>
答案 5 :(得分:0)