Saya menduplikasi aplikasi Acara TV Objective-C yang ada ke versi Swift baru menggunakan Xcode 6.1 dan saya mengalami beberapa masalah dengan CoreData.
Saya telah membuat model 4 entitas, membuat subkelas NSManagedObject mereka (di Swift), dan semua file memiliki target aplikasi yang tepat (untuk 'Sumber Kompilasi').
Saya masih mendapatkan kesalahan ini setiap kali saya mencoba memasukkan entitas baru:
CoreData: peringatan: Tidak dapat memuat kelas bernama 'Shows' untuk entitas 'Shows'. Kelas tidak ditemukan, menggunakan NSManagedObject default sebagai gantinya.
Beberapa komentar:
Saat menyimpan ke Data Inti, saya menggunakan cara konteks orang tua-anak untuk memungkinkan penguliran latar belakang. Saya melakukan ini dengan menyiapkan ManagedObjectContext menggunakan:
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
}()
dan dengan menyimpan data menggunakan:
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...
})