微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

swift – 无法转换’T’类型的值?预期的参数类型’_?’ – 通用类型和完成块

我正在尝试使用Alamofire 3和最新版本的ObjectMapper( https://github.com/Hearst-DD/ObjectMapper)实现AlamofireObjectMapper( https://github.com/tristanhimmelman/AlamofireObjectMapper).

似乎AlamofireObjectMapper尚未更新与Alamofire 3一起使用,所以我正在尝试自己做.

我来到这段代码,现在我被卡住了.

似乎通用类型T在响应的完成块内是不可访问的.是Alamofire 3改变还是Swift 2.1改变?

这是错误

Cannot convert value of type ‘T?’ to expected argument type ‘_?’

public func responSEObject<T: Mappable>(queue: dispatch_queue_t?,keyPath: String?,completionHandler: (NSURLRequest,NSHTTPURLResponse?,T?,AnyObject?,ErrorType?) -> Void) -> Self {
    return response(queue: queue) { (request,response,data,error) -> Void in
        dispatch_async(dispatch_get_global_queue(disPATCH_QUEUE_PRIORITY_DEFAULT,0)) {
            let JSONResponseSerializer = Request.JSONResponseSerializer(options: .AllowFragments)
            let result = JSONResponseSerializer.serializeResponse(request,error)
            let parsedobject = Mapper<T>().map(keyPath != nil ? result.value?[keyPath!] : result.value)

            dispatch_async(queue ?? dispatch_get_main_queue()) {
                completionHandler(self.request!,self.response,parsedobject,result.value ?? response.data,result.error) // Here it shows the error: Cannot convert value of type 'T?' to expected argument type '_?' 
            }
        }
    }

}
刚刚找到解决方案.
这似乎是Xcode 7.1 beta编译器的一个问题.它在“parsedobject”参数上给出了问题,并且下一个参数出错了.
completionHandler(self.request!,**result.value ?? data**,result.error)

因此,如果您碰巧遇到相同的错误,请查看所有其他参数是否正常.

祝好运.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐