我有一个需要由iOS和tvOS使用的共享框架,但我想有选择地导入一个仅适用于iOS的框架(CoreTelephony)。swift 语法说你可以在前面加上一个属性,但这不起作用:
@available(iOS 10.0, *) import CoreTelephony
这根本不支持吗?我是否需要子类来导入 iOS 特定的框架?
对于 Swift <= 4.0,您可以使用os()
配置测试函数:
#if os(iOS)
import CoreTelephony
#endif
您还必须包装使用CoreTelephony
的代码。
所有可用的os()
测试是:macOS
、iOS
、watchOS
、tvOS
、Linux
、Windows
和FreeBSD
。
对于 Swift>= 4.1,您还可以使用canImport()
:
#if canImport(CoreTelephony)
import CoreTelephony
#endif
[A] 框架的构建设置IPHONEOS_DEPLOYMENT_TARGET为 iOS 14
示例:(参考: https://stackoverflow.com/a/38538861/9801139)
->目标构建阶段
-> 将二进制文件与库链接
-> 将 [A] 框架状态设为可选
在您的目标中
#if canImport(CoreTelephony)
import CoreTelephony
#endif