Swift-Netzwerkkündigung: URLSession.data(for:) (async/await) vs. dataTaskPublisher (Combine) [geschlossen]IOS

Programmierung für iOS
Guest
 Swift-Netzwerkkündigung: URLSession.data(for:) (async/await) vs. dataTaskPublisher (Combine) [geschlossen]

Post by Guest »

Ich entwickle eine Netzwerkschicht in meiner Swift-Anwendung für iOS 17 und höher und benötige einen robusten Mechanismus zum Abbrechen bestimmter Netzwerkanforderungen, insbesondere einzelner Datei-Uploads. Ich wäge zwei primäre Ansätze ab: URLSession.data(for:) mit async/await und URLSession.dataTaskPublisher mit Combine.
Die Herausforderung:
Meine Anwendung ermöglicht es Benutzern, mehrere Dateien als Anhänge hochzuladen. Ich benötige die Möglichkeit, den Upload einer bestimmten Datei abzubrechen, ohne andere laufende Uploads zu beeinträchtigen.
Spezifisches Szenario:
Stellen Sie sich eine Ansicht vor, in der ein Benutzer mehrere Dateien an einen Beitrag anhängen kann. Wenn der Benutzer beim Hochladen beschließt, einen der Anhänge zu entfernen, muss ich nur den Upload-Auftrag dieser Datei abbrechen, ohne die anderen zu unterbrechen.
Ansatz 1 : async/await with URLSession.data(for:)
Diese Methode erscheint sauberer und moderner. Die zugrunde liegende URLSessionDataTask wird jedoch nicht direkt verfügbar gemacht. Dies macht es unklar, wie eine bestimmte Upload-Aufgabe identifiziert und abgebrochen werden kann, insbesondere wenn möglicherweise mehrere Uploads ausgeführt werden.
Ansatz 2: Kombinieren mit URLSession.dataTaskPublisher< /p>
Dieser Ansatz stellt AnyCancellable-Instanzen bereit und bietet eine Möglichkeit, Anfragen zu verwalten und abzubrechen. Der Nachteil ist die zusätzliche Komplexität beim Speichern und Verknüpfen dieser AnyCancellables mit eindeutigen Kennungen (wie URLs oder UUIDs), um eine gezielte Stornierung zu ermöglichen.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post