【问题标题】:How can I check if Bundle.module is defined?如何检查 Bundle.module 是否已定义?
【发布时间】:2020-10-20 20:11:39
【问题描述】:

在我的 iOS 应用程序中,我使用 SPM 来管理依赖项。其中之一是使用Bundle.module(Swift 5.3 中提供的新功能)加载资源的库。但现在我需要为我的应用程序使用 CocoaPods。因此,我应该为这个依赖添加 CocoaPods 支持。我知道我可以将Bundle.module 的声明从 resource_bundle_accessor.swift 复制到库中。但它也应该支持 SPM。我想知道如何检查是否应该使用 resource_bundle_accessor.swift 中定义的Bundle.module 或如果未生成 resource_bundle_accessor.swift 时执行相同操作的函数。

【问题讨论】:

  • 为什么 pod 需要知道包的内部代码?如果包有资源,就包的代码而言,Bundle.module 将在内部定义;还有什么要知道的?
  • @matt 当通过 CocoaPods 安装库时,我需要修复此行 let someResourceURL = Bundle.module.url(forResource: "resource", withExtension: "txt")
  • 我明白了!所以听起来像一个 Swift Package 和一个 CocoaPod 是不相容的目标。

标签: ios cocoapods swift5 nsbundle swift-package-manager


【解决方案1】:

一个选项是使用#if SWIFT_PACKAGE 来区分 SPM 和 CocoaPods 特定代码。以下是我们如何设置测试以使用两个包管理器运行的示例:https://github.com/firebase/firebase-ios-sdk/blob/master/FirebaseRemoteConfig/Tests/Unit/RCNRemoteConfigTest.m#L1144

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-19
    • 1970-01-01
    • 1970-01-01
    • 2019-10-14
    • 1970-01-01
    相关资源
    最近更新 更多