Duplikuję istniejącą aplikację Objective-C TV Show do nowej wersji Swift przy użyciu Xcode 6.1 i mam pewne problemy z CoreData.
Stworzyłem model 4 jednostek, utworzyłem ich podklasę NSManagedObject (w Swift), a wszystkie pliki mają ustawione odpowiednie cele aplikacji (dla „Źródła kompilacji”).
Nadal pojawia się ten błąd za każdym razem, gdy próbuję wstawić nową jednostkę:
CoreData: ostrzeżenie: nie można załadować klasy o nazwie „Programy” dla jednostki „Programy”. Nie znaleziono klasy, zamiast tego użyto domyślnego NSManagedObject.
Kilka uwag:
Podczas zapisywania do danych podstawowych używam sposobu kontekstu rodzic-dziecko, aby umożliwić wątkowanie w tle. Robię to, konfigurując ManagedObjectContext przy użyciu:
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
}()
i zapisując dane za pomocą:
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...
})