如果下载请求被取消,则 resumeData 总是 returns nil
The resumeData always returns nil if the download request is cancelled
我正在使用 Alamofire downloadRequest 下载数据,但在某些情况下,我正在取消 downloadRequest 并使用 Alamofire 4.5 版中的 resumeData 存储数据,但现在我将 pod 更新到最新的 Alamofire 5.4.4 版本,现在我得到 resumeData nil 当我取消下载请求。
关注分享码
static func downloadUserGuide(_ downloadLink: String, _ completion:@escaping(Bool) -> Void) {
if let data = UserDefaults.standard.data(forKey: downloadLink) {
resumeDownloadUserGuide(resumeData: data, userGuide.usermanual, { isDownloaded in
completion(isDownloaded)
})
}else{
self.request = AF.download(downloadLink, to: kDestination)
.downloadProgress { progress in
Console.log("Download Progress: \(progress.fractionCompleted)")
}
.responseData { response in
if response.value != nil {
if !self.userGuide.isInvalidated {
try! realm.write {
self.userGuide.pdfLinkURL = response.fileURL?.path ?? ""
}
}
saveUserGuideInDB(self.userGuide)
Console.log("Download successfull")
UserDefaults.standard.removeObject(forKey: downloadLink)
completion(true)
}else if response.error != nil {
if let resumeData = response.resumeData {
UserDefaults.standard.set(resumeData, forKey: downloadLink)
}
completion(false)
}
}
}
}
早些时候我使用的是 Alamofire 4.9 版,当时我使用以下代码取消请求
request?.cancel()
使用上面的代码行下载请求已成功取消,我们还使用 response.resumeData.
获得了简历数据
然后我将 Alamofire pod 更改为最新版本,即 5.4.4 在新的 Alamofire 版本中,他们更改了以前的功能并添加了更多功能。因此,使用以下代码行我取消请求并成功获取恢复数据。
request?.cancel(producingResumeData: true)
我正在使用 Alamofire downloadRequest 下载数据,但在某些情况下,我正在取消 downloadRequest 并使用 Alamofire 4.5 版中的 resumeData 存储数据,但现在我将 pod 更新到最新的 Alamofire 5.4.4 版本,现在我得到 resumeData nil 当我取消下载请求。
关注分享码
static func downloadUserGuide(_ downloadLink: String, _ completion:@escaping(Bool) -> Void) {
if let data = UserDefaults.standard.data(forKey: downloadLink) {
resumeDownloadUserGuide(resumeData: data, userGuide.usermanual, { isDownloaded in
completion(isDownloaded)
})
}else{
self.request = AF.download(downloadLink, to: kDestination)
.downloadProgress { progress in
Console.log("Download Progress: \(progress.fractionCompleted)")
}
.responseData { response in
if response.value != nil {
if !self.userGuide.isInvalidated {
try! realm.write {
self.userGuide.pdfLinkURL = response.fileURL?.path ?? ""
}
}
saveUserGuideInDB(self.userGuide)
Console.log("Download successfull")
UserDefaults.standard.removeObject(forKey: downloadLink)
completion(true)
}else if response.error != nil {
if let resumeData = response.resumeData {
UserDefaults.standard.set(resumeData, forKey: downloadLink)
}
completion(false)
}
}
}
}
早些时候我使用的是 Alamofire 4.9 版,当时我使用以下代码取消请求
request?.cancel()
使用上面的代码行下载请求已成功取消,我们还使用 response.resumeData.
获得了简历数据然后我将 Alamofire pod 更改为最新版本,即 5.4.4 在新的 Alamofire 版本中,他们更改了以前的功能并添加了更多功能。因此,使用以下代码行我取消请求并成功获取恢复数据。
request?.cancel(producingResumeData: true)