Протокол делегата проблемы не работает должным образом в swift - PullRequest
0 голосов
/ 16 января 2020

Реализован протокол для отслеживания прогресса загрузки файла веб-служб, но я не получаю никакой ошибки, но функция не вызывается. Даже я установил точку останова. Что я делаю в коде, пожалуйста, кто-нибудь может направить.

  • Один чистый класс Swift, который DataProvider содержит скачать

  • Функция. Вызов в ViewController для наблюдения за прогрессом.

Класс DataProvider Swift:


protocol MyWebServiceProtocol: class {
   func progress(_ fractionCompleted: Double)
   func downloadDidSucceed()
   func downloadDidFail(error: Error)
}

// in class
weak var delegate: MyWebServiceProtocol?

//Alamofire

Alamofire.download(
            url,
            method: .get,
            parameters: nil,
            encoding: JSONEncoding.default,
            headers: nil,
            to: destination).downloadProgress(closure: { (progress) in
                //progress closure
                self.delegate?.progress(progress.fractionCompleted)

                print(progress.fractionCompleted)
            }).response(completionHandler: { (DefaultDownloadResponse) in
                //here you able to access the DefaultDownloadResponse
                //result closure
                callback(DefaultDownloadResponse.response?.statusCode == 200, DefaultDownloadResponse.destinationURL?.absoluteString.replacingOccurrences(of: "file://", with: ""))
                print(DefaultDownloadResponse)
                self.delegate?.downloadDidSucceed()
            })

ViewController:

 var webService: DataProvider?

    convenience init(webService: DataProvider = DataProvider()) {
        self.init()
        self.webService = webService
        self.webService?.delegate = self

    }
    required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) }


extension DownloadViewController: MyWebServiceProtocol {
    func progress(_ fractionCompleted: Double) {
        print(fractionCompleted)
    }

    func downloadDidSucceed() {
        print("download")
    }


    func downloadDidFail(error: Error) {
        // handle error
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...