【发布时间】:2018-03-14 01:49:23
【问题描述】:
我有一个 iOS 和 tvOS 需要使用的共享框架,但我想选择性地导入一个仅适用于 iOS 的框架 (CoreTelephony)。 swift 语法说您可以预先添加一个属性,但这不起作用:
@available(iOS 10.0, *) import CoreTelephony
这根本不支持吗?我是否需要子类化才能导入 iOS 特定框架?
【问题讨论】:
标签: ios swift import frameworks
我有一个 iOS 和 tvOS 需要使用的共享框架,但我想选择性地导入一个仅适用于 iOS 的框架 (CoreTelephony)。 swift 语法说您可以预先添加一个属性,但这不起作用:
@available(iOS 10.0, *) import CoreTelephony
这根本不支持吗?我是否需要子类化才能导入 iOS 特定框架?
【问题讨论】:
标签: ios swift import frameworks
对于 Swift 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
【讨论】: