我正在使用Xcode 6.1将现有的Objective-C电视节目应用程序复制到新的Swift版本,并且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...
})