无法将类型 '(Any) -> ()' 的值转换为预期的参数类型 '(_) -> _'
Posted
技术标签:
【中文标题】无法将类型 \'(Any) -> ()\' 的值转换为预期的参数类型 \'(_) -> _\'【英文标题】:Cannot convert value of type '(Any) -> ()' to expected argument type '(_) -> _'无法将类型 '(Any) -> ()' 的值转换为预期的参数类型 '(_) -> _' 【发布时间】:2018-09-08 13:22:43 【问题描述】:安装 PromiseKit (6.2.1)。 Swift4.0。
import UIKit
import PromiseKit
class ViewController: UIViewController
func onFulfilled() -> (String) -> Promise<String>
return result in
return Promise<String> seal in
print(result)
DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(1), execute:
seal.fulfill("Hello")
)
override func viewDidLoad()
super.viewDidLoad()
Promise.value("first")
.then(onFulfilled())
.then(onFulfilled())
.then(onFulfilled())
.then result in print(result) // Cannot convert value of type '(Any) -> ()' to expected argument type '(_) -> _'
override func didReceiveMemoryWarning()
super.didReceiveMemoryWarning()
错误
无法将类型 '(Any) -> ()' 的值转换为预期的参数类型 '(_) -> _'
如何修复
如何修复.then result in print(result)
?
【问题讨论】:
【参考方案1】:将then
替换为done
。
_ = Promise.value("first")
.then(onFulfilled())
.then(onFulfilled())
.then(onFulfilled())
.done result in print(result)
见:https://github.com/mxcl/PromiseKit/blob/master/Documentation/GettingStarted.md
done 和 then 一样,但是你不能返回一个 Promise。它通常是链中“成功”部分的结束。
【讨论】:
以上是关于无法将类型 '(Any) -> ()' 的值转换为预期的参数类型 '(_) -> _'的主要内容,如果未能解决你的问题,请参考以下文章
无法将“DataResponse<Any>”类型的值转换为预期的参数类型“Data”
无法将“Swift.Array<Any>”类型的值转换为“Swift.Dictionary<Swift.String, Any>”
无法将“DataResponse<String>”类型的值转换为预期的参数类型“DataResponse<Any>”
无法转换类型“字典<String, Any>?”的值?到预期的参数类型“数据”