我制作使用 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) || os(tvOS)
但 CoreImage 在 macOS 上工作,所以我仍然需要这段代码,至少对于 carthage/cocoapods