Ich dupliziere eine vorhandene Objective-C-TV-Show-App mit Xcode 6.1 auf eine neue Swift-Version und habe einige Probleme mit CoreData.
Ich habe ein Modell von 4 Entitäten erstellt, ihre NSManagedObject-Unterklasse (in Swift) erstellt und für alle Dateien sind die richtigen App-Ziele festgelegt (für 'Quellen kompilieren').
Ich erhalte immer noch diesen Fehler, wenn ich versuche, eine neue Entität einzufügen:
CoreData: Warnung: Klasse mit dem Namen 'Shows' für Entität 'Shows' kann nicht geladen werden. Klasse nicht gefunden, stattdessen Standard-NSManagedObject.
Ein paar Kommentare:
Beim Speichern in Kerndaten verwende ich die Eltern-Kind-Kontextmethode, um Hintergrund-Threading zuzulassen. Dazu richte ich den ManagedObjectContext ein mit:
lazy var managedObjectContext: NSManagedObjectContext? = {
// Returns the managed object context for the application (which is already bound to the persistent store coordinator for the application.) This property is optional since there are legitimate error conditions that could cause the creation of the context to fail.
let coordinator = self.persistentStoreCoordinator
if coordinator == nil {
return nil
}
var managedObjectContext = NSManagedObjectContext(concurrencyType: NSManagedObjectContextConcurrencyType.MainQueueConcurrencyType)
managedObjectContext.persistentStoreCoordinator = coordinator
return managedObjectContext
}()
und durch Speichern von Daten mit:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), { () -> Void in
var context = NSManagedObjectContext(concurrencyType: NSManagedObjectContextConcurrencyType.PrivateQueueConcurrencyType)
context.parentContext = self.managedObjectContext!
...rest of core data saving code here...
})