RestKit 0.20 - Was ist der bevorzugte Weg, um ein neues NSManagedObject zu erstellen?

8

Ich bin neugierig, was der beste Weg ist, um ein neues NSManagedObject in RestKit 0.20 zu erstellen? Momentan sieht mein Code ungefähr so ​​aus:

%Vor%

Ich bin auch neugierig zu wissen, was meine Verantwortung für das Speichern / Löschen dieses Objekts ist. Wenn ich über RestKit den Server anmelde, wird der Kontext des verwalteten Objekts gespeichert?

Was ist, wenn ich diesen Erstellungsprozess abbrechen möchte - was ist der bevorzugte Weg, um dieses Objekt zu löschen?

Was macht RestKit im Grunde für mich und was soll ich tun? Ich habe dazu nicht viel Dokumentation gefunden und möchte darüber klar sein.

    
Michael Rose 06.12.2012, 20:54
quelle

2 Antworten

11

Wenn Sie ein RKManagedObjectRequestOperation für ein bestimmtes Objekt initialisieren, erhält RestKit eine permanente Objekt-ID für dieses Objekt und anschließend einen untergeordneten verwalteten Objektkontext, dessen übergeordneter Kontext der Kontext ist, in den das Objekt eingefügt wird. Die Operation führt dann die HTTP-Anforderung zum Abschluss aus und erhält eine Antwort.

Wenn die Antwort erfolgreich ist und die Zuordnung der Antwort erfolgreich ist (beachten Sie, dass die Zuordnung in diesem privaten untergeordneten Kontext erfolgt), wird der private untergeordnete Kontext gespeichert. Der Typ der aufgerufenen Sicherung wird durch den Wert der savesToPersistentStore -Eigenschaft bestimmt (siehe Ссылка ).

Bei YES wird der Kontext rekursiv über die NSManagedObjectContext -Kategorienmethode saveToPersistentStore (siehe Ссылка ).

Bei NO wird der Kontext über eine vanilla [NSManagedObjectContext save:] -Nachricht gespeichert, die die Änderungen an den übergeordneten Kontext zurückschickt. Sie bleiben lokal in diesem Kontext, bis Sie sie wieder speichern. Beachten Sie, dass Übergeordnete / untergeordnete Hierarchien für verwaltete Objektkontexte so lang sein können, wie Sie innerhalb der Anwendung erstellen.

Wenn die HTTP-Anforderung fehlgeschlagen ist oder während des Zuordnungsprozesses ein Fehler aufgetreten ist, wird der private Kontext nicht gespeichert und die Operation wird als fehlgeschlagen betrachtet. Dies bedeutet, dass keine Änderungen in der ursprünglichen MOC gespeichert werden und das Objektdiagramm so bleibt, wie es vor dem Start der Operation war (außer dass das gesendete Objekt, wenn es temporär ist, jetzt eine permanente Objekt-ID hat, aber noch nicht gespeichert ist).

    
Blake Watters 06.12.2012, 21:18
quelle
3

Die Art, wie Sie es tun, sollte funktionieren (jedes Mal, wenn der MOC in jedem Ihrer VC aufgerufen wird), aber nicht "empfohlen".

Was Apple wie jede Core Data-App vorschlägt, ist der Stil "pass the baton".

  

Verschachtelte Kontexte machen es wichtiger als je zuvor, dass Sie die   "Übergeben Sie den Taktstock" Ansatz für den Zugriff auf einen Kontext (durch die Übergabe eines Kontextes   von einem View-Controller zum nächsten), anstatt es abzurufen   direkt vom Anwendungsdelegaten.

Siehe hier: Ссылка

Was Ihre zweite Frage betrifft, sollte RestKit das Speichern / Aktualisieren Ihres Core Data Stacks bei Erfolg Ihrer API-Aufrufe verwalten, wenn alles gut zugeordnet ist / Setup.

Von blake der RK Schöpfer:

  

Wenn Sie ein Core Data-Objekt POST oder PUT senden, erhält RK ein permanentes Objekt   ID dafür und dann erstellt einen zweiten verwalteten Objekt Kontext, ausgelöst   die Anfrage und bildet die Antwort ab (wenn möglich). wenn die Antwort und   Das Mapping ist erfolgreich, es wird entweder zurück in den übergeordneten Ordner gespeichert   Kontext oder den ganzen Weg zurück zum persistenten Speicher (d. h. in SQLite)   basierend auf dem Wert von savesToPersistentStore.

    
allaire 06.12.2012 21:06
quelle

Tags und Links