Я дублирую существующее приложение телешоу Objective-C в новую версию Swift с использованием Xcode 6.1, и у меня возникли проблемы с CoreData.
Я создал модель из 4 сущностей, создал их подкласс NSManagedObject (в Swift), и для всех файлов установлены правильные цели приложения (для «Компиляция источников»).
Я все еще получаю эту ошибку всякий раз, когда пытаюсь вставить новую сущность:
CoreData: предупреждение: невозможно загрузить класс с именем «Shows» для сущности «Shows». Класс не найден, вместо этого используется NSManagedObject по умолчанию.
Несколько комментариев:
При сохранении в Core Data я использую родительско-дочерний контекст, чтобы разрешить фоновую потоковую передачу. Я делаю это, настраивая ManagedObjectContext, используя:
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
}()
и сохраняя данные с помощью:
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...
})