Ich habe eine iOS Restkit bezogene Frage. Ich habe Eltern-Kind-Beziehungsdaten, die von einem Remote-Server kommen, und mappe diese Objekte auf ein Objekt mit Restkit. Das Problem, das ich gerade habe, ist jede Anfrage an den Server, die "Kind" -Beziehung immer zu löschen und sie durch die neuen Daten zu ersetzen, die vom Server kommen. Gibt es eine Möglichkeit, diese zu vermeiden und stattdessen das neue Kind anzuhängen?Restkit-zu-viele-Beziehung anhängen, um Set zu setzen, anstatt einen neuen Satz zu setzen
Zum Beispiel: Ich habe eine klassische Kategorie -> Produkte Beziehung.
{"categories": [ { "cat_id": "1", "cat_title": "category 1", "cat_tag": 1, "product": [ { "prod_id": "1", "prod_name": "product 1", "prod_tag": 1 }, { "prod_id": "2", "prod_name": "product 2", "prod_tag": 1 } ] } ] }
Und das funktioniert gut und alles ist richtig mit der Beziehung auf dem Coredata gespeichert. Aber wenn ich eine weitere Anfrage an den Server und haben eine neue Antwort:
{"categories": [ { "cat_id": "1", "cat_title": "category 1", "cat_tag": 1, "product": [ { "prod_id": "3", "prod_name": "product 3", "prod_tag": 1 }, { "prod_id": "4", "prod_name": "product 4", "prod_tag": 1 } ] } ] }
werde ich Produkt 3 und Produkt 4 Produkt 1 und Produkt 2 in der Datenbank ersetzen. Ich bin sicher, dass ich die Beziehung und den Primärschlüssel richtig eingerichtet habe. (Sowohl cat_id
als auch prod_id
sind als Primärschlüssel eingestellt).
durch den internen Rahmen des RestKit untersucht haben, bemerkte ich, dass um line 576
in der RKObjectMappingOperation
Klasse gibt
RKLogTrace(@"Mapped NSSet relationship object from keyPath '%@' to '%@'. Value: %@", relationshipMapping.sourceKeyPath, relationshipMapping.destinationKeyPath, destinationObject); NSMutableSet *destinationSet = [self.destinationObject mutableSetValueForKey:relationshipMapping.destinationKeyPath]; [destinationSet setSet:destinationObject];
So ist Ich denke, das ist einfach nur
[destinationSet setSet:destinationObject];
bis
[destinationSet addObjectsFromArray:[destinationObject allObjects]]
Aber ich fragte mich, ob es einen besseren Weg gibt, es zu tun?
Cheers,