Tôi đang sao chép ứng dụng Objective-C TV Show hiện có sang phiên bản Swift mới bằng Xcode 6.1 và đang gặp một số sự cố với CoreData.
Tôi đã tạo một mô hình gồm 4 thực thể, tạo lớp con NSManagedObject của chúng (trong Swift) và tất cả các tệp đều có mục tiêu ứng dụng thích hợp được đặt (cho 'Nguồn biên dịch').
Tôi vẫn gặp lỗi này bất cứ khi nào tôi cố gắng chèn một thực thể mới:
CoreData: cảnh báo: Không thể tải lớp có tên 'Shows' cho thực thể 'Shows'. Không tìm thấy lớp, sử dụng NSManagedObject mặc định để thay thế.
Một vài nhận xét:
Khi lưu vào Dữ liệu cốt lõi, tôi sử dụng cách ngữ cảnh mẹ-con để cho phép phân luồng nền. Tôi thực hiện việc này bằng cách thiết lập ManagedObjectContext bằng cách sử dụng:
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
}()
và bằng cách lưu dữ liệu bằng cách sử dụng:
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...
})