Ich arbeite derzeit an einer CoreData-basierten iPhone-App mit einer Kartenansicht, deren Annotationen aus einem NSFetchedResultsController generiert werden sollen. Die Idee der Kartenansicht ist, dass sie eine Reihe von gespeicherten Standorten für den Benutzer anzeigt.
Einer der Vorteile der Verwendung eines NSFetchedResultsController ist, dass ich meine Kartenansicht als Delegaten auf dem NSFetchedResultsController festlegen und über Änderungen informiert werden kann, die an einem anderen Gerät oder auf einer Website vorgenommen werden, wenn der Benutzer angemeldet ist.
Ich habe derzeit ein wenig Schwierigkeiten zu verstehen, wie ich mit einer Vielzahl verschiedener Arten von Updates umgehen kann, die an meine NSFetchedResultsControllerDelegate-Implementierung gesendet werden. Die Dokumentation: http://developer.apple.com/library/ios/#documentation/CoreData/Reference/NSFetchedResultsControllerDelegate_Protocol/Reference/Reference.html scheint nicht zu erklären, wie diese unterschiedlichen Updates behandelt werden sollen, da sie eher auf die Integration mit einer UITableView ausgerichtet zu sein scheint, die den Großteil der Arbeit übernimmt.
Ich halte ein NSDictionary meiner Annotationen, die sie auf den NSIndexPath innerhalb des Ergebnismengen abbilden. Das Problem ist zum Beispiel, wenn ich 10 Bewegungs-, 3 Einfüge- und 4 Lösch-Updates erhalte, in welcher Reihenfolge sollte ich diese verarbeiten? Einige dieser indexPaths werden eine Reihe von konfliktierenden Indizes haben und die Reihenfolge, in der sie verarbeitet werden, wird sich auf die tatsächlichen Annotationen auswirken, die ich verschieben, einfügen oder löschen muss. Wenn ich zuerst alle Bewegungs-Updates durchführe, dann werden die Einfüge-Indizes zur Folge haben, dass die endgültige Reihenfolge anders sein wird, als wenn ich zuerst eingefügt hätte.
Gibt es bereits vorhandene kleine Bibliotheken/ Klassen, die einen Satz von Indizes vor einem Update in einen Satz von Indizes nach einem Update übersetzen? Wenn nicht, kann mir jemand erklären, wie das funktioniert, damit ich meine eigene schreiben kann?
Jede Hilfe wird sehr geschätzt werden!