Die beste Lösung in meiner Erfahrung ist, mehrere verwaltete Objektkontexte zu haben, von denen jeder sein eigenes Modell hat.
Allerdings gibt es eine Möglichkeit, zu erreichen, was Sie wollen:
// create the store coordinator
NSPersistentStoreCoordinator *storeCoordinator = [[NSPersistentStoreCoordinator alloc] init];
// create the first store
NSPersistentStore *firstStore = [storeCoordinator addPersistentStoreWithType: NSIncrementalStore configuration:nil URL:urlToFirstStore options:optionsForFirstStore error:&error];
// now create the second one
NSPersistentStore *secondStore = [storeCoordinator addPersistentStoreWithType:NSSQLiteStore configuration:nil URL:urlToSecondStore options:optionsForSecondStore error:&error];
// Now you have two stores and one context
NSManagedObjectContext *context = [[NSManagedObjectContext alloc] init];
[context setPersistentStoreCoordinator:storeCoordinator];
// and you can assign your entities to different stores like this
NSManagedObject *someObject = [[NSManagedObject alloc] initWithEntity:someEntity insertIntoManagedObjectContext:context];
// here the relevant part
[context assignObject:someObject toPersistentStore:firstStore]; // or secondStore ..
Sie sollten auch diese Links überprüfen eine bessere Vorstellung darüber zu bekommen, wie Core Data funktioniert:
Core Data Programming Guide - Persistent Store Coordinator
SO: Two persistent stores for one managed object context - possible?
SO: Can two managed object context share one single persistent store coordinator?
auch den Kommentar von TechZen in der zweiten Verbindung zu Konfigurationen überprüfen und darüber hier lesen:
Core Data Programming Guide - Configurations
und hier ist ein nettes Tutorial zu verwalten zwei Objekt Kontexte:
Multiple Managed Object Contexts with Core Data
Danke, dank dieser Ressourcen habe ich alles richtig eingerichtet. Allerdings bleibt eine Frage offen: Ich habe mehrere Kontexte für verwaltete Objekte, aber einen einzigen persistenten Speicherkoordinator mit zwei persistenten Speichern. Wenn ich eine Abrufanforderung für meinen Hauptkontext des verwalteten Objekts durchführe, möchte ich nur, dass sie meinem persistenten SQLite-Speicher zugeordnet ist, und nicht meine NSIncrementalStore-Unterklasse. Wie erreiche ich das? –
Sieht aus wie '- [NSFetchRequest setAffectedStores:]'. –
@ JordanKay Gern geschehen. Entschuldigung, ich habe deine Frage über die Abrufanfrage nicht früher beantwortet, es ist sonnig und heiß hier, also habe ich gefeiert :). Aber es sieht so aus als hättest du es richtig gemacht! [NSFetchRequest setAffectedStores:] ist es. – iska