簡體   English   中英

符合Swift中的協議

[英]Conforming to Protocols in 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)

}

抱歉,如果已經回答了。.我搜索並閱讀了其他一些帖子,但仍然無法弄清楚。

提前致謝!

看來您的課程沒有實現協議中的兩個方法:

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM