Puh, Entschuldigung für den langen Titel.Speichern einzelner CoreData-Entität (nicht den gesamten Kontext), während NSFetchedResultController-Funktionalität beibehalten
Ich habe einen einzigen Managed Object Context, wo ich Songs von zwei verschiedenen Orten gespeichert speichern. Ich erhalte einige der Songs aus dem persistenten Speicher auf dem Telefon (mit Core Data), und ich ziehe einige der Songs aus einer Online-Datenbank. Beide Songs haben die gleiche MananagedObject-Unterklasse. Ich möchte, dass beide Songs in einem einzigen Kontext sind, weil ich möchte, dass sie beide in einer Tabellenansicht angezeigt werden, die mit einem NSFetchedResultsController verbunden ist.
Das Problem tritt auf, wenn ich einen der Songs speichern möchte. Ich möchte nicht alle Lieder speichern, die ich aus der Online-Datenbank auf das Telefon gezogen habe. Ich möchte nur das einzelne Lied speichern, also funktioniert ein einfaches [moc save] nicht. Das andere Problem ist, dass, nachdem ich den einzelnen Song gespeichert habe, ich immer noch möchte, dass die aus dem Internet gezogenen Songs im Kontext sind (aber wiederum nicht gespeichert werden). Ich glaube, ich habe ein paar verschiedene Optionen:
1) Ist es möglich, einen NSFetchedResults-Controller mit mehreren Kontexten verbunden zu haben?
2) Ich könnte alle Songs aus der Online-Datenbank in einen separaten temporären Kontext verschieben, im ursprünglichen Kontext speichern und dann alle Songs zurück verschieben. (siehe: How do I copy or move an NSManagedObject from one context to another?)
3) Merken Sie sich alle Schlüssel-Wert-Paare für die Online-Songs, löschen Sie die Online-Songs aus dem Kontext, speichern Sie den ursprünglichen Kontext und fügen Sie alle Online-Songs wieder in den ursprünglichen Kontext ein der gespeicherten Schlüssel-Wert-Paare.
4) Ich bin eine riesige n00b und vermisse etwas einfacher.
Danke!
Was möchten Sie eigentlich speichern? Der Ort des Songs oder die tatsächlichen Song-Daten (Datei)? – sosborn