无法在 Swift 中强制转换类型 'Void' 为 'String'

Cannot convert type 'Void' to 'String' in coercion in Swift

所以我正在使用一些库和其中一种方法,据称具有 return 值

let data2 = dataCollector.collectCardFraudData({ ( str:String) in })

但问题是 return 值是 void 类型,但我可以看到其中存在的值,我检查了很多教程,他们建议更改 return 类型,但由于这是一个库,我认为我无法 that.Is 有任何其他方法可以将该值转换为字符串 ??

我也有点新 Swift,所以请输入任何信息都会有帮助

谢谢

我知道的不多。只是猜测。您的函数正在通过完成处理程序返回值。你应该这样使用它

let data2 = dataCollector.collectCardFraudData({ str in
    print(str) // str available here
})

由于 collectCardFraudData 有一个闭包,它在该块内为您提供 'str' 值,直接将其分配给 'data2' 会导致您出错。

试试下面的代码,如果有效请告诉我

var data2 = String()
dataCollector.collectCardFraudData({ str in 
    data2 = "\(str)"
})

谢谢

该函数没有 return 值。 Swift 等价于

func collectCardFraudData(completion: @escaping (String) -> Void)

所以你必须用下面的语法调用它。 deviceData 作为参数传递,完成后必须调用 completion

dataCollector.collectCardFraudData { deviceData in 

  // do something with deviceData
  completion()
}