我正在使用 Kotlin 2 和 Xcode 15.4 开发一个 Kotlin 多平台项目,集成 MLKit 进行条形码扫描。我在尝试使用
resultsInImage
的 MLKBarcodeScanner
函数时遇到类型不匹配错误。
我有一个实现
cocoapods.MLKitVision.MLKCompatibleImageProtocol
的图像,但 resultsInImage
功能需要 objcnames.protocols.MLKCompatibleImageProtocol
。
我尝试过同时使用
GMLImage
和 MLKVisionImage
,但都不起作用。编译器给我这个错误:
Argument type mismatch: actual type is 'cocoapods.MLKitVision.MLKVisionImage', but 'objcnames.protocols.MLKCompatibleImageProtocol' was expected.
但是,
MLKVisionImage
确实实现了cocoapods.MLKitVision.MLKCompatibleImageProtocol
。
这是我的设置:
在
build.gradle.kts
中,我使用以下方法导入了库:
pod("MLKitVision")
pod("MLKitBarcodeScanning")
(官方推荐的
pod("GoogleMLKit/BarcodeScanning")
没用)
我在 iosMain 文件中的导入:
import cocoapods.MLKitBarcodeScanning.MLKBarcodeScanner
import cocoapods.MLKitVision.MLKVisionImage
有问题的代码:
val barCodeResults = barcodeScanner.resultsInImage(MLKVisionImage(didOutputSampleBuffer))
Android Studio 显示:“类型不匹配。必需:MLKCompatibleImageProtocol 找到:MLKVisionImage”
我尝试将
MLKVisionImage
转换为 MLKCompatibleImageProtocol
包的 objcnames.protocols
,但这也不起作用。
有趣的是,当我在同一项目中的 Swift 文件中尝试相同的操作时,它工作正常,表明包安装是正确的。
为什么这在 Kotlin iosMain 部分不起作用?为什么接口会出现在objcnames.protocols包中?
任何见解或解决方案将不胜感激!
我重建了项目并使用了演员表
作为 objcnames.protocols.MLKCompatibleImageProtocol
并且成功了:)
MLKVisionImage 和 GMLImage 仍然应该产生一致的实例,但它们没有。