RestKit mit Core-Daten verwenden Ich biete Offline-Unterstützung, wenn der Benutzer Objekte ohne Internetverbindung hinzufügt, bearbeitet oder löscht, indem er Objekte markiert und mit Core Data speichert.RestKit - Nach Offline-Speicherung hinzugefügte/bearbeitete/gelöschte Objekte senden
Wenn das Internet wieder verfügbar ist, hole ich alle hinzugefügten/bearbeiteten/gelöschten Objekte, speichere sie in Arrays und benutze die normalen Methoden und Schleife für jedes Element, um sie auf den Server zu legen.
Liste der Arrays
- fetchedAddedCompanies
- fetchedEditedCompanies
- fetchedAddedContacts
- fetchedEditedContacts
- fetchedDeletedContacts
Init-Methode (Beispiel für bearbeitete Unternehmen)
// Added Companies
...
// Edited Companies
for (Company *tempObj in fetchedAddedCompanies)
{
// Find keys for selected languages
[self updateAccountToServer:tempObj:addCompanyContext];
}
// ...
Am Ende der updateAccountToServer Ich poste das Objekt (self.company) mit seiner Zuordnung zum Server.
...
[objectManager postObject:self.company mapResponseWith:[companyMapper inverseMapping] delegate:self];
...
Frage
Ich bin für eine effizientere Lösung suchen, wenn der Benutzer ein paar Objekte aktualisieren hat und - dass die besondere ein - ein paar neue Objekte, da im Gegensatz zu allen Bearbeiten/Löschen hinzugefügt hat Methoden gibt der Server eine ID für jedes neu erstellte Objekt zurück, das gespeichert wird.
1) Vermeiden Sie z. updateAccountToServer für jedes bearbeitete Objekt und ein Array von Objekten senden, anstatt
2) Mit dem RKRequestQueue zusammen mit den RKObjectManager (regarding this question and a good answer)
Meiner Meinung 1) wird schwer sein, weil die resourcePath für jede Anforderung zu implementieren enthält eine eindeutige ID, ich habe 2 so versucht), aber für jede Anforderung die Möglichkeit binden die Zuordnung fehlt
[syncQueue addRequest:[[RKObjectManager sharedManager] objectLoaderWithResourcePath:tempString delegate:self]];
Vielen Dank für Ihre Ideen mit!
Dieser Zweig scheint jetzt inaktiv zu sein, vorausgesetzt, es war ein Zweig von RestKit 0.10. Arbeitet jemand in einem ähnlichen Zweig in Restkit 0.20.x? – Diego