Sto tentando la mia prima migrazione leggera CoreData. Ho letto due guide sulle migrazioni leggere. Entrambi aggiungere il codice per una classe CoreDataStack, modificando variabili come NSPersistentStoreCoordinator e aggiungendo:Come eseguire una migrazione LightData CoreData in Swift
let mOptions = [NSMigratePersistentStoresAutomaticallyOption: true,
NSInferMappingModelAutomaticallyOption: true]
Il mio problema è che ho un'applicazione perfettamente funzionante utilizzando CoreData ma non ho quella classe o qualcosa di simile. Il mio problema è, perché questi progetti presumono che io abbia questa classe e posso ottenere la mia migrazione leggera senza di essa? In caso contrario, come posso aggiungerlo?
Ulteriori informazioni, se necessario per rispondere
A settembre ho costruito un app utilizza CoreData. Era la mia prima volta che utilizzo CoreData e ho seguito questa guida di Ray Wenderlich. Ha funzionato benissimo, ho finito l'app e ora è nel negozio. Ora vorrei iniziare a apportare alcune modifiche all'app, che riguardano i nuovi attributi CoreData e alcune nuove entità. Ho letto che ho bisogno di installare una nuova versione del modello.
Ho trovato un Ray Wenderlich guide ma utilizza questo file CoreDataStack.swift che non ho:
cosa frustrante è che ho configurato CoreData utilizzando loro guida e non ha incluso quel file! Poi vado a fare una migrazione e loro presumono di averlo.
sono andato alla ricerca di un altro metodo di migrazione leggero, trovato questo alternative ed è anche il codice riferimenti che non ho mai costruito nella mia CoreData:
lazy var persistentStoreCoordinator: NSPersistentStoreCoordinator? = {
// The persistent store coordinator for the application. This implementation creates and return a coordinator, having added the store for the application to it. This property is optional since there are legitimate error conditions that could cause the creation of the store to fail.
// Create the coordinator and store
var coordinator: NSPersistentStoreCoordinator? = NSPersistentStoreCoordinator(managedObjectModel: self.managedObjectModel)
let url = self.applicationDocumentsDirectory.URLByAppendingPathComponent("MyLog.sqlite")
var error: NSError? = nil
var failureReason = "There was an error creating or loading the application's saved data."
if coordinator!.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: url, options: nil, 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()
}
Così ho letto le guide e capire il 90% del esercitazioni. Ho solo bisogno di qualcuno che si prenda un'occhiata a quel tutorial originale CoreData e dimmi dove, se non ho una classe CoreData, vorrei aggiungere il codice leggero come ad esempio:
let mOptions = [NSMigratePersistentStoresAutomaticallyOption: true,
NSInferMappingModelAutomaticallyOption: true]
Grazie! 01:00 ma lo proverò al mattino e segnerà correttamente se funziona. Qualche possibilità di far luce su quello che ho menzionato in classe? Perché, in quel tutorial, c'è lo store persistente gestito dalla classe? –
Grazie, sembra aver funzionato. Non ho ottenuto la stampa della console che ho visto nel tutorial, mostrando una migrazione, ma ho aggiunto attributi ed entità e poi ho eseguito l'app e non ho avuto problemi. –