gpt4 book ai didi

swift - 扩展不同类时出现 "Does not conform to protocol"错误

转载 作者:搜寻专家 更新时间:2023-11-01 05:39:51 24 4
gpt4 key购买 nike

我试图通过注入(inject)适应 URLSessionURLSessionDataTask 协议(protocol)的对象来测试我自己的类。我正在扩展 NSURLSessionNSURLSessionDataTask 以采用这些协议(protocol),以便我可以正常使用现有对象,但在单元测试中使用测试对象。

我有以下代码,错误注释:

typealias SessionHandler = (NSData?, NSURLResponse?, NSError?) -> Void

protocol URLSession {

func dataTaskWithURL(url: NSURL, completionHandler: SessionHandler) -> URLSessionDataTask

}

protocol URLSessionDataTask {

}

// Type 'NSURLSession' does not conform to protocol 'URLSession'
extension NSURLSession : URLSession {}
extension NSURLSessionDataTask : URLSessionDataTask {}

我理解错误,我的协议(protocol)与 NSURLSession 实现的方法不完全匹配。我该如何解决这个问题?

最佳答案

我最终做的是创建一个协议(protocol)扩展,它创建 NSURLSession 需要的必要方法。

extension NSURLSession : URLSession {
func dataTaskWithURL(url: NSURL, completionHandler: SessionHandler) -> URLSessionDataTask {
return dataTaskWithURL(url, completionHandler: completionHandler) as NSURLSessionDataTask
}
}

关于swift - 扩展不同类时出现 "Does not conform to protocol"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31948920/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com