【问题标题】:How do you selectively import a framework in Swift?如何在 Swift 中选择性地导入框架?
【发布时间】:2018-03-14 01:49:23
【问题描述】:

我有一个 iOS 和 tvOS 需要使用的共享框架,但我想选择性地导入一个仅适用于 iOS 的框架 (CoreTelephony)。 swift 语法说您可以预先添加一个属性,但这不起作用:

@available(iOS 10.0, *) import CoreTelephony

这根本不支持吗?我是否需要子类化才能导入 iOS 特定框架?

【问题讨论】:

    标签: ios swift import frameworks


    【解决方案1】:

    对于 Swift os() 配置测试功能:

    #if os(iOS)
      import CoreTelephony
    #endif
    

    您还必须包装使用 CoreTelephony 的代码。

    os() 的所有可用测试包括:macOSiOSwatchOStvOSLinuxWindowsFreeBSD

    对于 Swift >= 4.1,您还可以使用 canImport()

    #if canImport(CoreTelephony)
      import CoreTelephony
    #endif
    

    【讨论】:

      【解决方案2】:

      [A] 框架的构建设置 IPHONEOS_DEPLOYMENT_TARGET 为 iOS 14

      示例:(参考号:https://stackoverflow.com/a/38538861/9801139

      -> 你的目标构建阶段

      -> 将二进制文件与库链接

      -> 将 [A] 框架状态设为可选

      在你的目标中

      #if canImport(CoreTelephony)
        import CoreTelephony
      #endif
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-10-02
        • 2014-10-04
        • 2015-04-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-11
        • 1970-01-01
        相关资源
        最近更新 更多