符合Swift中的协议

时间:2016-06-06 21:24:03

标签: ios swift

我是Swift开发的新手,在尝试做一些教程时我很挣扎(我知道,他们是一步一步的,但显然我必须搞砸了一线,现在我无法想象生活为什么它不起作用。我不擅长调试,缺乏对语言基础的扎实理解。如果有人能帮我指出正确的方向,我将不胜感激。

我已经尝试过评论一些东西,试图让它尽可能地“裸骨”,同时仍然能够“顺从”,但我现在相当坚持。

以下是代码:

此课程收到错误:

final class ForecastAPIClient : APIClient {

    let configuration: NSURLSessionConfiguration
    lazy var session : NSURLSession = {
        return NSURLSession(configuration: self.configuration)
    }()

    private let token : String


    init(config: NSURLSessionConfiguration, APIKey: String){
        self.configuration = config
        self.token = APIKey
    }

    convenience init(APIKey: String){
        self.init(config: NSURLSessionConfiguration.defaultSessionConfiguration(), APIKey: APIKey)
    }

    func fetchCurrentWeather(coordinate: Coordinate, completion : APIResult<CurrentWeather> -> Void){
        let request = Forecast.Current(token: self.token, coordinate: coordinate).request
    }

}

试图遵守这个协议:

protocol APIClient{

    var configuration : NSURLSessionConfiguration { get }
    var session : NSURLSession { get }

    init(withConfig: NSURLSessionConfiguration)

    func JSONTaskWithRequest(request: NSURLRequest, completion: JSONTaskCompletion) -> JSONTask

    func fetch<T>(request: NSURLRequest, parse: JSON -> T?, completion: APIResult<T> -> Void)

}

很抱歉,如果这已经得到了解答..我搜索并阅读了其他一些帖子,但我仍然无法弄明白。

提前致谢!

1 个答案:

答案 0 :(得分:0)

看起来你的班级没有实施协议中的两个方法:

func JSONTaskWithRequest(request: NSURLRequest, completion: JSONTaskCompletion) -> JSONTask

func fetch<T>(request: NSURLRequest, parse: JSON -> T?, completion: APIResult<T> -> Void)

此外,您的班级有一个带有此签名的初始化程序:

init(config: NSURLSessionConfiguration, APIKey: String)

当协议要求时:

init(withConfig: NSURLSessionConfiguration)