Próbuję wykonać moją pierwszą lekką migrację CoreData. Przeczytałem dwa przewodniki na temat lekkich migracji. Zarówno dodanie kodu do klasy CoreDataStack, modyfikowania zmiennych, takich jak NSPersistentStoreCoordinator i dodając:Jak wykonać lekką migrację CoreData w Swift
let mOptions = [NSMigratePersistentStoresAutomaticallyOption: true,
NSInferMappingModelAutomaticallyOption: true]
Moim problemem jest to, że mam doskonale funkcjonującą aplikację używając CoreData ale nie mam tej klasy lub czegoś podobnego. Mój problem to, dlaczego te projekty zakładają, że mam tę klasę i czy uda mi się osiągnąć moją niewielką migrację bez niej? Jeśli nie, w jaki sposób mogę go dodać?
Więcej informacji, w razie potrzeby do odebrania
We wrześniu I zbudowany aplikację używając CoreData. Był to mój pierwszy raz, kiedy korzystałem z CoreData i poszedłem za tym przewodnikiem Ray Wenderlich. Udało się świetnie, skończyłem aplikację, a teraz jest w sklepie. Teraz chciałbym wprowadzić pewne zmiany w aplikacji, które obejmują nowe atrybuty CoreData i kilka nowych elementów. Czytałem, że muszę ustawić nową wersję modelu.
znalazłem Ray Wenderlich guide ale używa tego pliku CoreDataStack.swift że nie mam:
Co frustrujące jest to, że konfiguracja CoreData użyciu ich instrukcji i nie obejmują ten plik! Potem idę przeprowadzić migrację i zakładają, że ją mam.
poszedłem w poszukiwaniu innej metodzie lekkiej migracji, które oceniły tę alternative i zbyt kod odnośników, że nigdy nie wbudowane w moim 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()
}
Więc czytałem prowadnice i zrozumieć 90% samouczki. Po prostu potrzebuję kogoś, aby przyjrzeć się tym oryginalnym tutorialu CoreData i powiedz mi, gdzie, jeśli nie mam klasę CoreData, dodałbym lekki kodu, takich jak:
let mOptions = [NSMigratePersistentStoresAutomaticallyOption: true,
NSInferMappingModelAutomaticallyOption: true]
Dziękujemy! 1 rano, ale spróbuję go rano i oznaczyć poprawne, jeśli działa. Czy miałbyś szansę rzucić trochę światła na to, o czym wspomniałem w tej klasie? Dlaczego w tym samouczku jest trwały sklep obsługiwany przez klasę? –
Dziękujemy, wygląda na to, że zadziałało. Nie otrzymałem wydruku konsoli, który widziałem w samouczku, pokazującym migrację, ale dodałem atrybuty i elementy, a następnie uruchomiłem aplikację i nie miałem żadnych problemów. –