2016-03-25 11 views
0

Ich verwende CoreData und einige Daten müssen mit iCloud synchronisiert werden und andere nicht. Ich habe ein wenig Nachforschungen angestellt und fand die Lösung zu have separate persistent stores.Wie füge ich einen neuen persistenten Speicher für CoreData hinzu?

Ich verwende einige der vorab generierten Code wie unten Coredata in der Standardmethode ohne Problem verwenden:

lazy var persistentStoreCoordinator: NSPersistentStoreCoordinator = { 
    let coordinator = NSPersistentStoreCoordinator(managedObjectModel: self.managedObjectModel) 
    let url = self.applicationDocumentsDirectory.URLByAppendingPathComponent("MyAppCoreData.sqlite") 

    do { 
     try coordinator.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: url, options: nil) 
    } catch { 
    } 

    return coordinator 
}() 

lazy var managedObjectContext: NSManagedObjectContext = { 
    let coordinator = self.persistentStoreCoordinator 
    var managedObjectContext = NSManagedObjectContext(concurrencyType: .MainQueueConcurrencyType) 
    managedObjectContext.persistentStoreCoordinator = coordinator 
    return managedObjectContext 
}() 

Es gibt auch eine Datei in XCode MyApp.xcdatamodeld standardmäßig erstellt, wo ich kann Entitäten hinzufügen/ändern.

Jetzt möchte ich einen neuen persistenten Speicher (sagen wir, Speicher 2) hinzuzufügen, hier sind meine Fragen:

(1) Ich plane, die neuen persistenten Speicher wie folgt hinzuzufügen:

try coordinator.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: url_2, options: option_2) 

Alles, was ich noch hinzufügen muss?

(2) Wenn ich Entitäten für Filiale 2 hinzufügen/ändern möchte, sollte ich eine neue store2.xcdatamodeld Datei erstellen? Wie kann diese Datei mit dem eigentlichen Code verknüpft werden?

(3) Wenn ich eine Entität zugreifen will, muss ich etwas tun, wie folgt aus:

let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate 
let managedContext = appDelegate.managedObjectContext 
let fetchRequest = NSFetchRequest(entityName: "ContentViewData") 
// ... 
managedContext.executeFetchRequest(fetchRequest) 

Wie das Gleiche tun (zum Beispiel ausführen einige Abrufanforderung) für Unternehmen in Speicher 2?

Vielleicht ist mein Verständnis nicht völlig richtig und einige meiner Fragen sind nicht gültig, bitte beantworten Sie in Ihrem Ermessen.

Antwort

0

Ich schlage vor. Sie können 2 Datenbank in 1 xcdatamodeld Datei konfigurieren. dann Konfiguration mit persistenten Speicher

coordinator.addPersistentStoreWithType(NSSQLiteStoreType, configuration: configuration_1, URL: url, options: option) 

references

wechseln
Verwandte Themen