2016-12-02 2 views
0

Ich versuche, bestimmte Daten von iOS zu Online-MySQL-Datenbank zu senden. PHP wird auf dem Server verwendet, um das Empfangen und Einfügen von Daten zu handhaben.Wie Uploadvorgänge einzeln zu verwalten

Die Sache ist, dass ich mehrere Datenpakete habe. Und der Schlüssel ist, sie einzeln zu senden, was bedeutet, dass ich einen Mechanismus brauche, um das zweite Datenpaket in der Warteschlange warten zu lassen, bis iOS eine Rückmeldung vom Server erhalten hat, dass der erste Datensatz bereits in der Datenbank gespeichert wurde.

Ich habe anfangs versucht, eine serielle Dispatch-Warteschlange zu erstellen, mit dem Ziel, dass die iOS-App die Upload-Arbeit in einer Sequenz ausführt. Obwohl die iOS-Seite die Arbeit gemäß der Sequenz ausgeführt hat, ist jede Aufgabe einfach "beendet", indem sie ihr Datenpaket gesendet hat, ohne abzuwarten, ob die Daten in die Datenbank eingefügt wurden. Dann ist das Problem, dass zwischen dem Senden der Daten und der vollständigen Speicherung von Daten in MySQL auf dem Server aufgrund von Problemen wie der Netzwerkverbindung immer einige Zeit verstreichen wird.

Das Ergebnis ist, dass die Daten möglicherweise nicht in der gewünschten Reihenfolge gespeichert werden, wobei einige spätere Daten früher als die vorherigen Daten gespeichert werden können.

Ich vermute, was fehlt ist ein "Feedback" -Mechanismus von der Server-Seite auf die iOS-Seite.

Kann jemand einen Weg vorschlagen, diesen Rückmeldungsmechanismus zu realisieren, damit ich die serielle Reihenfolge des Hochladens von Datenaufgaben steuern kann.

Vielen Dank!

Grüße, Paul

Antwort

1

Wenn Sie Daten an den Server senden, dann Callback bietet die meisten der verfügbaren Frameworks. Mit AFNetworking (oder jetzt als Almofire bekannt), es würde wie folgt aussehen:

[[ConnectionManager instance] GET: @"link" parameters: nil 
success:^(AFHTTPRequestOperation* operation, id responseObject) 
{ 
} 
failure:^(AFHTTPRequestOperation* operation, NSError* error) 
{ 
}]; 

So können Sie Ihren Code in bestimmten Handler setzen und kontinuierlich Anfragen stellen.

Sie können auch gleichzeitige Operationen erstellen und setzen diese auf OperationQueue beim Einstellen der richtigen Abhängigkeiten, aber es ist sicherlich zeitaufwendiger.