Обработчики завершения 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)
}

который даст следующий вывод:

блаблабла

данные блаблабла

Другие вопросы по тегам