Also mein Problem war ich hatte keine Ahnung, wo dieser beständige Speicher-Koordinator-Code geht. Es stellt sich heraus, dass es automatisch in Ihrer AppDelegate
Implementierung erstellt wird, wenn Sie beim Erstellen des Projekts "Core Data verwenden" aktivieren.
Also, aus dem zweiten Glied here, alles was Sie brauchen für eine leichte Migration tun (das Hinzufügen neuer Attribute und so weiter) ist die folgende:
- Wählen Sie .xcdatamodeld
- aus dem Menü Wählen Sie Editor -> Modellversion hinzufügen
- Benennen Sie die neue Version wie gewünscht, wählen Sie die frühere Version in "Basierend auf Modell"
- Wählen Sie im Dateiinspektor des .xcdatamodel Modellversion -> Aktuell -> Ihr neues Modell Version
- Wählen Sie Ihre neue Modellversion innerhalb des .xcdatamodeld im Projektnavigator aus, und nehmen Sie die Änderungen an Ihrem Modell vor.
- Wenn Sie Attributnamen oder Typen geändert haben, erstellen Sie ein Zuordnungsmodell, neue Datei -> Core Data -> Mapping Model -> Pick Quell- und Zielmodellversionen
- aktualisiert die Zuordnung in dem neuen Mapping-Modell
ändern AppDelegate persistenten Speicher Koordinator Code wie folgt.
lazy var persistentStoreCoordinator: NSPersistentStoreCoordinator? = {
var coordinator: NSPersistentStoreCoordinator? = NSPersistentStoreCoordinator(managedObjectModel: self.managedObjectModel)
let url = self.applicationDocumentsDirectory.URLByAppendingPathComponent("<data model name>.sqlite")
var error: NSError? = nil
var failureReason = "There was an error creating or loading the application's saved data."
let options = [
NSMigratePersistentStoresAutomaticallyOption: true,
NSInferMappingModelAutomaticallyOption: true]
if coordinator!.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: url, options: options, error: &error) == nil {
coordinator = nil
// Report any error we got.
var dict = [String: AnyObject]()
dict[NSLocalizedDescriptionKey] = "Failed to initialize the application's saved data"
dict[NSLocalizedFailureReasonErrorKey] = failureReason
dict[NSUnderlyingErrorKey] = error
error = NSError(domain: "YOUR_ERROR_DOMAIN", code: 9999, userInfo: dict)
// Replace this with code to handle the error appropriately.
// abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
NSLog("Unresolved error \(error), \(error!.userInfo)")
abort()
}
return coordinator
}()
hinzufügen So Optionen Migration Sie nur auf den addPersistentStoreWithType
Anruf.
Es half, danke! –
Bitte vermeiden Sie, mit URLs zu antworten, oder fügen Sie die Highlights, die die Frage beantworten, zumindest ein. Sie können nicht garantieren, dass ein externer Link immer da ist ... – dooleyo
Und in der Tat ist die erste Verbindung tot - Bad Gateway. – rattletrap99