Реализован протокол для отслеживания прогресса загрузки файла веб-служб, но я не получаю никакой ошибки, но функция не вызывается. Даже я установил точку останова. Что я делаю в коде, пожалуйста, кто-нибудь может направить.
Один чистый класс 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
}
}