Это как мой completionHandler выглядит следующим образом:Swift 3: Transfer Utility, как повторить загрузку после сбоя?
self.completionHandler = { (task, error) -> Void in
DispatchQueue.main.async(execute: {
if ((error) != nil){
//retry upload
}
else{
//success
}
})
}
Я не вижу какой-либо метод, я могу позвонить на task
, чтобы повторить его, я вижу только continue
метод, но не знает, как использовать его.
Я начинаю загружать в первый раз следующим образом:
transferUtility.uploadData(
data as Data,
bucket: "test",
key: "testTU3/try\(Date()).jpeg",
contentType: "image/jpeg",
expression: expression,
completionHander: completionHandler).continue(successBlock: { (task) -> AnyObject! in
if let error = task.error {
NSLog("Error: %@",error.localizedDescription);
}
if let exception = task.exception {
NSLog("Exception: %@",exception.description);
}
if let _ = task.result {
NSLog("Upload Starting!")
// Do something with uploadTask.
}
return nil;
})
Как Попробовать добавить в completionHandler после аварии?
EDIT:
вот что я пытался
self.completionHandler = { (task, error) -> Void in
DispatchQueue.main.async(execute: {
if ((error) != nil){
guard let data = task.request?.httpBody else {return}
self.uploadData(data: data as NSData, bucket: task.bucket, key: task.key)
}
else{
}
})
}
Но проблема в том, что я не могу получить фактические данные запроса, так как
task.request?.httpBody
вычисляет ноль.
Такой подход - хорошая идея? Я знаю, что это может привести к бесконечной ходовой петле
спасибо, см. Мое редактирование выше – DCDC
какие данные вы ожидаете получить? – donkon
Я думал, что это будут данные, которые я отправил в этом запросе раньше, в моем случае это изображение – DCDC