Ios swift完成处理程序无法将类型的值转换为指定类型

Ios swift完成处理程序无法将类型的值转换为指定类型,ios,string,swift,xcode7,completionhandler,Ios,String,Swift,Xcode7,Completionhandler,我正在尝试实现完成处理程序,但遇到以下错误: 无法将类型的值转换为指定的类型 这是我的密码: override func viewDidLoad() { super.viewDidLoad() let sss : String = doSomethingElse { (data) in } print(sss) } func doSomethingElse(completion:(data:String) -> Void) { let s =

我正在尝试实现完成处理程序,但遇到以下错误:

无法将类型的值转换为指定的类型

这是我的密码:

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
你们知道我为什么会犯这个错误吗

我将非常感谢您的帮助。

您已经声明sss为字符串,但随后尝试为其分配闭包;所以编译器会给你一个错误

我想你想做的是将闭包分配给sss,然后将闭包传递给doSomethingElse:

这将提供以下输出:

喋喋不休

数据是无稽之谈

因为您将sss声明为字符串,然后尝试为其分配闭包。
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)
}