0

所以我正在使用一些库和其中一种方法,据说有返回值

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

但问题是返回值是 void 类型,但我可以看到其中存在的值,我检查了很多教程,他们建议更改返回类型,但由于这是一个库,我不我想我可以做到。有没有其他方法可以将该值转换为字符串?

我也是一个新的 Swift,所以请任何输入都会有帮助

谢谢

4

3 回答 3

2

该函数没有返回值。Swift 等价物是

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

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

dataCollector.collectCardFraudData { deviceData in 

  // do something with deviceData
  completion()
}
于 2018-11-21T10:32:25.857 回答
-1

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

let data2 = dataCollector.collectCardFraudData({ str in
    print(str) // str available here
})
于 2018-11-21T10:25:24.007 回答
-1

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

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

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

谢谢

于 2018-11-21T10:30:18.727 回答