无法将“字符串”类型的值转换为预期的参数类型“ EInkSizeType”

时间:2020-08-02 13:00:49

标签: swift

尝试使用目标C中的NFC框架,我做了一个桥头,并将调用转换得如此迅速。

但是这里出现错误:

“无法将类型为'String'的值转换为预期的参数类型为'EInkSizeType'”

有人可以帮忙吗??

        let image = UIImage(named: "nummer27")
                        
        
      let EInkSizeType420 = "EInkSizeType420"
        
     //  [[NFCTagReader sharedSingleton] sendImage:image einkSizeType:EInkSizeType420];];
     //  Converted to Swift 5.2 by Swiftify v5.2.19376 - https://swiftify.com/
      NFCTagReader.sharedSingleton().sendImage(image!, einkSizeType: EInkSizeType420)
        
       

1 个答案:

答案 0 :(得分:0)

方法签名期望参数EInkSizeType的类型为einkSizeType:,因此完整签名为:

sendImage(_ image: UIImage, einkSizeType: EInkSizeType)

在不知道确切框架的情况下,我只能猜测枚举将类似于EInkSizeType.EInkSizeType420。自动完成功能应该可以帮助您,只需开始输入.作为参数,然后应该显示可能值的列表。因此,假设.EInkSizeType420是正确的枚举值,您的代码应如下所示:

let image = UIImage(named: "nummer27")

 //  [[NFCTagReader sharedSingleton] sendImage:image einkSizeType:EInkSizeType420];];
 //  Converted to Swift 5.2 by Swiftify v5.2.19376 - https://swiftify.com/
  NFCTagReader.sharedSingleton().sendImage(image!, einkSizeType: .EInkSizeType420)

还有一点,在生产中,请尽量不要使用!(强制展开),而应选择?(可选),除非应用程序的预期操作是崩溃,否则该值为空。相反,请尝试使用guard let ... else { ... }来妥善处理意外情况:

func sendImageToNFCTag() {
  guard let image = UIImage(named: "nummer27") else {
       // Show alert dialog that image couldn't be found here
       // ...
       return
  }

  //  [[NFCTagReader sharedSingleton] sendImage:image einkSizeType:EInkSizeType420];];
  //  Converted to Swift 5.2 by Swiftify v5.2.19376 - https://swiftify.com/
  NFCTagReader.sharedSingleton().sendImage(image, einkSizeType: .EInkSizeType420)
}