Joh*_*ike 8 xcode swift promisekit
我是 Swift 中的 Promise 的新手,并使用 PromiseKit 在操场上尝试创建一个非常简单的响应并尝试使用它。我有以下代码:
import UIKit
import PromiseKit
func foo(_ error: Bool) -> Promise<String> {
return Promise { fulfill, reject in
if (!error) {
fulfill("foo")
} else {
reject(Error(domain:"", code:1, userInfo:nil))
}
}
}
foo(true).then { response -> String in {
print(response)
}
}
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
error: MyPlayground.playground:11:40: error: cannot convert value of type '() -> ()' to closure result type 'String'
foo(true).then { response -> String in {
Run Code Online (Sandbox Code Playgroud)
抛出错误是因为您传递给的闭包声称then
返回 a String
,但从未返回过这样的值。除非您计划String
在该闭包中的某个位置返回 a ,否则您需要将闭包的返回类型更改为Void
,如下所示:
foo(true).then { response -> Void in\n print(response)\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n请注意,具有返回类型的闭包Void
可以省略其返回类型。另外,您{
的问题中的代码中有一个无关的内容(我假设您的实际代码中不存在该内容,因为它可以编译)。
除了这个问题之外,Error
没有可访问的初始化程序\xe2\x80\x94您在代码中使用的初始化程序实际上属于NSError
,因此您的reject
调用需要如下所示:
reject(NSError(domain:"", code:1, userInfo:nil))\n
Run Code Online (Sandbox Code Playgroud)\n
归档时间: |
|
查看次数: |
21140 次 |
最近记录: |