我正在使用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...
})
@objc(MyClass)
。 - Andrew