Ich mache einen Netzwerkanruf, um ein Bild auf einen Backend-Server hochzuladen. Im Moment benutze ich folgendes um zu programmieren. Dieser Code funktioniert perfekt, wenn das Internet online ist.So überprüfen Sie, ob der mehrteilige Upload erfolgreich war: alamofire image
// MARK: - PUT
static func PUT(URL: String,
data: Data,
mimeType: String,
headers: [String: String]?) -> Promise<Void>
{
return Promise { fulfill, reject in
let URL = try! URLRequest(url: URL, method: .put, headers: headers)
Alamofire.upload(
multipartFormData: { multipartFormData in
multipartFormData.append(InputStream.init(data: data), withLength: UInt64(data.count), name: "image", fileName: "file.png", mimeType: mimeType)
},
with: URL,
encodingCompletion: { encodingResult in
switch encodingResult {
case .success(let upload, _, _):
upload.responseJSON { response in
if response.result.value == nil {
fulfill()
}else {
reject(response.result.error!)
}
}
case .failure(_):
break
}
})
}
}
}
Wenn ich es in den Offline-Modus versetzt. Es führt immer noch die Funktion aus und erfüllt immer noch() das Versprechen. Selbst wenn das Netzwerk offline ist. Ich denke, das liegt daran, dass überprüft wird, ob das encodingResult erfolgreich ist oder nicht. NOt für den Netzwerkanruf selbst.
Wie kann ich überprüfen, ob der Netzwerkanruf erfolgreich war oder nicht? Es kehrt Void zurück.
Beste, kevin.
Import Hinweise:
- Server gibt nill wenn wir 200-Code erhalten, was bedeutet, dass das Bild hochgeladen haben.
ich das nicht verstehen. Erstens, du erfüllst oder verweigst es nicht im Fall von "Failure". Ich hätte gedacht, dass du "ablehnen" willst. Zweitens, wenn die Antwort "Erfolg" war, aber es gab keinen "Wert", erfüllst du das Versprechen, aber wenn du einen "Wert" erhalten hast, lehnst du ab. Das scheint rückwärts zu sein. – Rob
Der Server gibt "nil" zurück, wenn wir einen 200-Code haben. So ist es eingerichtet. Du hast Recht, dass ich eine Ablehnung in der .failure hinzufügen muss, aber das ändert nichts an der Situation. –
Wie würden Sie den bestehenden Code ändern? :) Danke für den Tipp übrigens –