Xcode 6.1を使用して、既存のObjective-C TV Showアプリを新しい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...
})