Xcode 6.1을 사용하여 기존 Objective-C TV Show 앱을 새 Swift 버전으로 복제하고 있으며 CoreData에 몇 가지 문제가 있습니다.
4 개의 엔티티 모델을 만들고 NSManagedObject 하위 클래스 (Swift에서)를 만들었으며 모든 파일에는 적절한 앱 대상이 설정되어 있습니다 ( 'Compile Sources').
새 엔티티를 삽입하려고 할 때마다이 오류가 계속 발생합니다.
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...
})