【发布时间】:2014-12-24 04:34:20
【问题描述】:
我正在使用 Xcode 6.1 将现有的 Objective-C TV Show 应用程序复制到新的 Swift 版本中,但在使用 CoreData 时遇到了一些问题。
我创建了一个包含 4 个实体的模型,创建了它们的 NSManagedObject 子类(在 Swift 中),并且所有文件都设置了正确的应用目标(用于“编译源”)。
每当我尝试插入新实体时,我仍然会收到此错误:
CoreData:警告:无法为实体加载名为“Shows”的类 '节目'。找不到类,改用默认的 NSManagedObject。
几个cmets:
当保存到 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...
})
【问题讨论】:
标签: multithreading core-data swift nsmanagedobject