Невозможно преобразовать тип '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
})
Другие вопросы по тегам