Невозможно преобразовать тип 'Void' в 'String' при принуждении в Swift - PullRequest
0 голосов
/ 21 ноября 2018

Так что я использую некоторые библиотеки и один из методов, якобы возвращаемое значение

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

Но проблема в том, что возвращаемое значение имеет тип void, но я мог быПосмотрите значение, присутствующее в нем, я проверил много уроков, в которых они предложили изменить тип возвращаемого значения, но, поскольку это библиотека, я не думаю, что смогу это сделать. Есть ли другой способ получить это значениепреобразован в строку ??

Я тоже вроде новый Swift, поэтому, пожалуйста, любые входные данные будут полезны

Спасибо

Ответы [ 3 ]

0 голосов
/ 21 ноября 2018

Так как collectCardFraudData имеет замыкание, в котором оно дает вам значение 'str' внутри этого блока, прямое присвоение ему 'data2' вызывает вашу ошибку.

Попробуйте приведенный ниже код и, пожалуйста, дайте мне знать, если он работает

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

Спасибо

0 голосов
/ 21 ноября 2018

Функция не имеет возвращаемого значения.Эквивалент Swift равен

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

Так что вам нужно вызвать его с помощью приведенного ниже синтаксиса.deviceData передается в качестве параметра, и вы должны вызвать completion, когда закончите.

dataCollector.collectCardFraudData { deviceData in 

  // do something with deviceData
  completion()
}
0 голосов
/ 21 ноября 2018

Я не знаю много.Просто предположение.Ваша функция возвращает значение через обработчик завершения.Вы должны использовать это так

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