Обработчики завершения Swift не могут преобразовать значение типа в указанный тип
Я пытаюсь реализовать обработчики завершения, но я получаю эту ошибку:
невозможно преобразовать значение типа в указанный тип.
Вот мой код:
override func viewDidLoad() {
super.viewDidLoad()
let sss : String = doSomethingElse { (data) in
}
print(sss)
}
func doSomethingElse(completion:(data:String) -> Void) {
let s = "blablabla"
print(s)
completion(data:s)
}
На этой строке я получаю сообщение об ошибке:
let sss : String = doSomethingElse { (data) in
Кто-нибудь из вас знает, почему я получаю эту ошибку?
Я очень ценю вашу помощь.
1 ответ
Вы объявили sss
быть String
но затем вы попытались назначить ему закрытие; поэтому компилятор выдает ошибку.
Я думаю, что вы пытались сделать это назначить закрытие sss
а затем передать это закрытие doSomethingElse
:
func viewDidLoad() {
super.viewDidLoad()
let sss : ((data:String) -> Void) = { data in
print ("data is \(data)")
}
doSomethingElse(sss)
}
func doSomethingElse(completion:(data:String) -> Void) {
let s = "blablabla"
print(s)
completion(data:s)
}
который даст следующий вывод:
блаблабла
данные блаблабла