0

Das allgemeine Szenario, dass ein RESTful-Webdienst asynchron aufgerufen werden muss, um einen JSON-Inhalt abzurufen, und anschließend diese JSON-Antwort analysiert wird, um einige Datenmodell-Entitäten zu erstellen. Dieser Prozess könnte abgebrochen/fortgesetzt werden. Ich bin mir nicht ganz sicher, von denen der beste Ansatz wäre:Async Operation vs Async-Netzwerkaufgabe?

  • ein Operation für das Netzwerk Call Implementierung und einen anderen Operation für das JSON-Analyse und eine Abhängigkeit zwischen den beiden Operationen Einstellung (die JSON Ausgabe von dem ehemaligen das Wesen Dateneingabe der letzteren). Dann fügen Sie diese Operationen zu einem OperationQueue hinzu.
  • Mit einem URLSession und URLSessionDataTask den Netzwerkaufruf durchführen, und die JSON-Parsing in seinem Callback.

Oder vielleicht ein anderer anderer und besserer Weg?

EDIT: In meinem Szenario muss ich nicht gleichzeitige Netzwerkanrufe durchführen. Wenn ich den Dienst mit verschiedenen Parametern aufrufen muss, sollte ich in der Lage sein, die vorherige Netzwerkaufgabe bei Bedarf zu beenden und die neue zu starten.

Antwort

0

In den meisten einfachen Fällen ist die Antwort nur eine URLSession, aber wenn es kompliziert ist, wie Sie zu sein scheinen, dann ist Operation ein nützliches Werkzeug. Dieser genaue Anwendungsfall wird ausführlich in Advanced NSOperations diskutiert.

+0

Danke. Ich muss nur diese 2 Aufgaben durchführen, Netzwerkanruf + JSON-Antwortanalyse und keine Parallelität benötigt. Wenn ich einen neuen Netzwerkanruf benötige, muss ich nur den vorherigen anhalten und den neuen starten. Das würde die URLSession-Option besser geeignet machen? – AppsDev

+0

Ja; Sie können 'invalidateAndCancel()' verwenden, um eine bestehende Sitzung abzubrechen. Sie müssen nur den Überblick behalten. –

Verwandte Themen