error: cannot convert value of type '() -> ()' to closure result type 'String' using Swift + PromiseKit
error: cannot convert value of type '() -> ()' to closure result type 'String' using Swift + PromiseKit
我是 Swift 中的承诺新手,使用 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)
}
}
但是我收到以下错误:
error: MyPlayground.playground:11:40: error: cannot convert value of type '() -> ()' to closure result type 'String'
foo(true).then { response -> String in {
抛出错误是因为您传递给 then
的闭包声称是 return 一个 String
,但从来没有 return 编辑过这样的值。除非你计划在那个闭包的某处 returning 一个 String
,否则你需要将闭包的 return 类型更改为 Void
,如下所示:
foo(true).then { response -> Void in
print(response)
}
请注意,return 类型 Void
的闭包可以省略其 return 类型。另外,你的问题代码中有一个无关的 {
(我假设这在你的实际代码中不存在,因为它编译)。
除此问题外,Error
没有可访问的初始化程序——您在代码中使用的初始化程序实际上属于 NSError
,因此您的 reject
调用需要看起来像:
reject(NSError(domain:"", code:1, userInfo:nil))
我是 Swift 中的承诺新手,使用 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)
}
}
但是我收到以下错误:
error: MyPlayground.playground:11:40: error: cannot convert value of type '() -> ()' to closure result type 'String'
foo(true).then { response -> String in {
抛出错误是因为您传递给 then
的闭包声称是 return 一个 String
,但从来没有 return 编辑过这样的值。除非你计划在那个闭包的某处 returning 一个 String
,否则你需要将闭包的 return 类型更改为 Void
,如下所示:
foo(true).then { response -> Void in
print(response)
}
请注意,return 类型 Void
的闭包可以省略其 return 类型。另外,你的问题代码中有一个无关的 {
(我假设这在你的实际代码中不存在,因为它编译)。
除此问题外,Error
没有可访问的初始化程序——您在代码中使用的初始化程序实际上属于 NSError
,因此您的 reject
调用需要看起来像:
reject(NSError(domain:"", code:1, userInfo:nil))