swift - #if canImport(CoreImage) 在 swift 包管理器中不工作

标签 swift ciimage swift-package-manager

我正在制作使用 CoreImage 的库。库支持 Cocoapods、Carthage 和 Swift 包管理器。

当我在 Swift 包管理器中构建它时,出现了这个错误:

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_CIFilter", referenced from:
      objc-class-ref in EIP67Code.swift.o
  "_OBJC_CLASS_$_CIImage", referenced from:
      objc-class-ref in EIP67Code.swift.o
ld: symbol(s) not found for architecture x86_64

当我使用#if canImport(CoreImage)

#if canImport(CoreImage)
import CoreImage
extension Web3 {
  public struct EIP67CodeGenerator {
    public static func createImage(from: EIP67Code, scale: Double = 1.0) -> CIImage {
      guard let string = from.toString().addingPercentEncoding(withAllowedCharacters: .urlHostAllowed) else { return CIImage() }
      guard let data = string.data(using: .utf8, allowLossyConversion: false) else { return CIImage() }
      let filter = CIFilter(name: "CIQRCodeGenerator", parameters: ["inputMessage" : data, "inputCorrectionLevel":"L"])
      guard var image = filter?.outputImage else { return CIImage() }
      let transformation = CGAffineTransform(scaleX: CGFloat(scale), y: CGFloat(scale))
      image = image.transformed(by: transformation)
      return image
    }
  }
}
extension Web3.EIP67Code {
  public func toImage(scale: Double = 1.0) -> CIImage {
    return Web3.EIP67CodeGenerator.createImage(from: self, scale: scale)
  }
}
#endif

如果我使用 #if os(iOS) || 它工作正常操作系统(电视操作系统)

但是 CoreImage 可以在 macOS 上运行,所以至少对于 carthage/cocoapods 我仍然需要这段代码

最佳答案

没有找到任何解决方案,所以我只是在 Package.swift 中排除了这个文件

.target(
name: "web3swift",
dependencies: ["BigInt", "secp256k1", "keccak", "scrypt", "PromiseKit", "base58"],
exclude: ["ObjectiveC", "Utils/EIP67Code.swift", "Migration-iOS.swift"]
),

关于swift - #if canImport(CoreImage) 在 swift 包管理器中不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52649742/

相关文章:

swift - 我无法为我的 View 提供新的角半径

ios - CIFilter/CI图像 : BSXPCMessage received error for message: Connection interrupted

ios - 组合 CIImages,使一个居中且宽度相同

控制台 "CIKernel' s ROI 函数中的 Swift 错误不允许平铺”

ios - AudioKit 问题,麦克风不够灵敏

ios - 我无法根据与谓词的关系从核心数据中获取实体

ios - 使用具有约束持续时间的动画快速移动按钮并在此期间检测触摸

swift - 使用 SPM(Swift 包管理器)获取本地文件的 URL

swift3 - 使用 Swift 包管理器时仅测试依赖项

swift - Perfect 2.0 的 Heroku Procfile