Mevcut bir Objective-C TV Show uygulamasını Xcode 6.1 kullanarak yeni bir Swift sürümüne kopyalıyorum ve CoreData ile ilgili bazı sorunlar yaşıyorum.
4 varlıktan oluşan bir model oluşturdum, NSManagedObject alt sınıfını (Swift'de) oluşturdum ve tüm dosyaların uygun uygulama hedefleri ayarlanmış ('Derleme Kaynakları' için).
Yeni bir varlık eklemeye çalıştığımda hala bu hatayı alıyorum:
CoreData: uyarı: 'Gösteriler' varlığı için 'Gösteriler' adlı sınıf yüklenemiyor. Bunun yerine varsayılan NSManagedObject kullanılarak sınıf bulunamadı.
Birkaç yorum:
Çekirdek Verilere kaydederken, arka planda iş parçacığı oluşturmaya izin vermek için üst-alt bağlam yolunu kullanıyorum. Bunu, ManagedObjectContext'i kullanarak yapıyorum:
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
}()
ve aşağıdakileri kullanarak verileri kaydederek:
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...
})