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