你好,我有一些关于分页消息的函数。
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> -> ())')
答案 0 :(得分:1)
listMessages(...)
期望以下元组返回类型
(Int, Int, ([ChatItemProtocol]) -> Void)
另一方面,函数list(...)
使用上面的参数作为参数,但隐式地还包含Void
(/空元组类型()
)返回类型。即,list(...)
的完整签名是
(Int, Int, ([ChatItemProtocol]) -> Void) -> ()
当您尝试将list
作为listMessages(...)
的返回值返回时,会导致类型不匹配。
在不知道代码的目的的情况下,很难给出任何具体的建议,但您可以通过修改listMessages(...)
的返回类型以包含()
返回类型来解决上述问题。所以匹配list(...)
class func listMessages() -> ((Int, Int, ([ChatItemProtocol]) -> Void) -> ())