你好,我有一些分页消息的功能。
class func listMessages() -> (Int, Int, ([ChatItemProtocol]) -> Void) {
let service = MessageService()
func list(count: Int, offset: Int, comp:([ChatItemProtocol]) -> Void) {
let params : [String : AnyObject] = ["offset" : offset, "limit" : count]
service.listMessagesForRoom(params) { (messages) in
comp(messages.map({$0}))
}
}
return list
}
我有一些错误:
Cannot convert return expression of type '(Int, offset: Int, comp: ([ChatItemProtocol]) -> Void) -> ()' to return type '(Int, Int, ([ChatItemProtocol]) -> Void)' (aka '(Int, Int, Array<ChatItemProtocol> -> ())')
最佳答案
listMessages(...)
需要以下元组返回类型
(Int, Int, ([ChatItemProtocol]) -> Void)
函数list(...)
,另一方面,使用上面的参数作为参数,但也隐式包含一个Void
(/空元组类型()
) 返回类型。即,list(...)
的完整签名是
(Int, Int, ([ChatItemProtocol]) -> Void) -> ()
当您尝试返回 list
作为 listMessages(...)
的返回值时,会导致类型不匹配。
在不知道代码的目的的情况下,很难给出任何具体的建议,但是您可以通过修改 listMessages(...)
的返回类型以包含 ()
返回类型,因此与 list(...)
class func listMessages() -> ((Int, Int, ([ChatItemProtocol]) -> Void) -> ())
关于swift - 无法将返回表达式类型转换为带有闭包的返回类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38223444/