ฉันกำลังทำซ้ำแอพ Objective-C TV Show ที่มีอยู่กับ Swift เวอร์ชันใหม่โดยใช้ Xcode 6.1 และกำลังมีปัญหากับ CoreData
ฉันได้สร้างแบบจำลองของ 4 เอนทิตีสร้างคลาสย่อย NSManagedObject (ใน Swift) และไฟล์ทั้งหมดมีการกำหนดเป้าหมายแอปที่เหมาะสม (สำหรับ 'Compile Sources')
ฉันยังคงได้รับข้อผิดพลาดนี้ทุกครั้งที่พยายามแทรกเอนทิตีใหม่:
CoreData: คำเตือน: ไม่สามารถโหลดคลาสที่ชื่อ 'Shows' สำหรับเอนทิตี 'Shows' ไม่พบคลาสโดยใช้ NSManagedObject เริ่มต้นแทน
ความคิดเห็นเล็กน้อย:
เมื่อบันทึกเป็นข้อมูลหลักฉันใช้วิธีบริบทแม่ลูกเพื่ออนุญาตการทำเธรดพื้นหลัง ฉันทำได้โดยการตั้งค่า 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...
})