最佳答案
我正在复制一个现有的 Objective-C TV Show 应用程序到一个新的 Swift 版本使用 Xcode 6.1,并与 CoreData 有一些问题。
我已经创建了一个4个实体的模型,创建了它们的 NSManagedObject 子类(在 Swift 中) ,并且所有文件都设置了适当的应用程序目标(用于“编译源”)。
每当我尝试插入一个新实体时,我仍然会得到这个错误:
警告: 无法为实体加载名为“ Shows”的类 “ Shows”。未找到类,改为使用默认的 NSManagedObject。
一些评论:
当保存到 CoreData 时,我使用父子上下文方式来允许后台线程。为此,我使用以下方法设置 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...
})