[英]Cannot convert return expression type to return type with closure?
您好,我有一些分頁消息功能。
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
(/ empty tuple type ()
)返回類型。 即, list(...)
的完整簽名為
(Int, Int, ([ChatItemProtocol]) -> Void) -> ()
當您嘗試返回list
作為listMessages(...)
的返回值時,導致類型不匹配。
在不知道代碼用途的情況下,很難給出任何具體建議,但是您可以通過修改listMessages(...)
的返回類型以包括()
返回類型來解決上述問題,從而匹配list(...)
class func listMessages() -> ((Int, Int, ([ChatItemProtocol]) -> Void) -> ())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.