我正在从Obj移动我的代码。 C到Swift C并尝试实现Twitter sdk ..
但是,我收到了一个错误...... 任何人都可以告诉我我做错了什么。
请帮助我。
我花了两天时间尝试了一切,但没有为我工作。
答案 0 :(得分:16)
您的块没有return语句,因此编译器 使用最后一个语句的结果
UIApplication.sharedApplication().openURL(url)
作为返回值,即块签名中声明的Bool
而不是Void
。
要解决该问题,只需添加一个return语句:
{ (url: NSURL, oauthToken: String) -> Void in
UIApplication.sharedApplication().openURL(url)
return
}
答案 1 :(得分:0)
问题是openURL
返回一个布尔值,并且尝试将其转换为Void
,因为闭包被声明为返回Void
。只需删除如下:
{ (url: NSURL, token: String) in
UIApplication.sharedApplication().openURL(url)
}
如果您不想更改闭包签名,只需将返回值分配给变量:
{ (url: NSURL, token: String) -> Void in
let ret = UIApplication.sharedApplication().openURL(url)
}
答案 2 :(得分:0)
其他答案中没有说明的是,Swift会隐式地将回复添加到单个语句闭包中。
这就像conditionSet.sort {$0.set < $1.set}
这样的陈述可以起作用。
这也可能导致意外错误。为避免错误,使闭包有2个语句。最简单的方法是在接受的答案中所述的原始陈述之后添加一个回报。