如何在编译时检查当前项目中是否存在 Swift 模块



我想知道 Swift 中是否有任何预处理器命令来检查模块是否存在。我使用 CocoaPods 依赖管理器工具,我想在编译时进行检查,以便我可以使用它,或者我必须执行自定义解决方法。

它会是这样的:

#if module(SwiftyJSON)
#else
#endif
引入

canImport 指令的提案 (SE-0075( 已被接受,但截至 Swift 3.0.2/Swift 3.1 beta 尚未实施。跟踪实现的错误是SR-1560。

使用该指令,您将能够编写如下内容:

#if canImport(UIKit)
// UIKit-based code
#elseif canImport(Cocoa)
// OSX code
#else
// Workaround/text, whatever
#endif

PS:"预处理器命令"不是 Swift 的正确术语,因为 Swift 没有预处理器。

当你编译或归档你的应用时,它只会根据你编写的代码安装它实际需要的模块、方法和类。因此,据我所知,无法检查该模块是否存在,因为应该不可能拥有或没有它。换句话说,要么你有,要么没有。这意味着你,作为开发人员,知道你是否安装了 pod,这就是为什么不应该有一种在运行时检查某些东西的方法,这已经是预先确定的。请问你为什么要做到这一点?

相关内容

最新更新