Невозможно преобразовать тип 'Void' в 'String' при принуждении в Swift
Так что я использую некоторые библиотеки и один из методов, якобы возвращаемое значение
let data2 = dataCollector.collectCardFraudData({ ( str:String) in })
Но проблема в том, что возвращаемое значение имеет тип void, но я мог видеть значение, присутствующее в нем, я проверил много уроков, где они предлагали изменить тип возвращаемого значения, но так как это библиотека, я не Думаю, я могу сделать это. Есть ли другой способ, чтобы преобразовать это значение в строку?
Я также вроде как новый Swift, поэтому, пожалуйста, любые комментарии будут полезны
Спасибо
3 ответа
Функция не имеет возвращаемого значения. Свифт эквивалент
func collectCardFraudData(completion: @escaping (String) -> Void)
Таким образом, вы должны вызвать его с синтаксисом ниже. deviceData
передается в качестве параметра, и вы должны позвонить completion
когда вы закончите.
dataCollector.collectCardFraudData { deviceData in
// do something with deviceData
completion()
}
Так как collectCardFraudData имеет замыкание, где оно дает вам значение 'str' внутри этого блока, прямое присвоение его 'data2' вызывает у вас ошибку.
Попробуйте код ниже и, пожалуйста, дайте мне знать, если это работает
var data2 = String()
dataCollector.collectCardFraudData({ str in
data2 = "\(str)"
})
Спасибо
Я не знаю много. Просто предположение. Ваша функция возвращает значение через обработчик завершения. Вы должны использовать это так
let data2 = dataCollector.collectCardFraudData({ str in
print(str) // str available here
})