Swift

2016-01-20 28 views
5

Hafif CoreData Geçiş Nasıl Yapılır İlk hafif CoreData geçişimi deniyorum. Hafif göçlerde iki kılavuz okurum. Hem NSPersistentStoreCoordinator gibi değişkenleri değiştirerek ve ekleyerek, bir CoreDataStack sınıfına kod ekleyin:Swift

let mOptions = [NSMigratePersistentStoresAutomaticallyOption: true, 
    NSInferMappingModelAutomaticallyOption: true] 

Benim sorunum CoreData kullanarak mükemmel işleyen bir uygulama var ama böyle o sınıf veya bir şey yok olmasıdır. Sorunum, bu projeler neden bu sınıfa sahip olduğumu varsayalım ve hafif göçümü bu olmadan elde edebilir miyim? Yoksa, nasıl ekleyebilirim? Eylül ayında

Yanıt Eğer Gerekli

Fazla Bilgi, ben CoreData kullanarak bir uygulama oluşturduk. CoreData'yı ilk defa kullanıyorum ve bu Ray Wenderlich kılavuzunu takip ettim. Harika çalıştı, uygulamayı bitirdim ve şimdi mağazada. Şimdi yeni CoreData özelliklerini ve birkaç yeni varlığı içeren uygulamada bazı değişiklikler yapmaya başlamak istiyorum. Yeni bir model versiyonunu kurmam gerektiğini okudum.

Ben Ray Wenderlich guide buldum ama bende olmayan bu CoreDataStack.swift dosyası kullanır: sinir bozucu ne

CoreData Class

Ben kurulum CoreData onların kılavuzunu kullanarak olmasıdır ve içermiyordu bu dosya! Sonra bir göç yapmaya gidiyorum ve sahip olduğumu varsayıyorlar.

Ben, başka hafif göç yöntemiyle arama gitti bu alternative buldum ve benim CoreData yerleşik asla çok referanslar kodu: Ben kılavuzları okumak ve% 90 anlama ettik

Yani
lazy var persistentStoreCoordinator: NSPersistentStoreCoordinator? = { 
// The persistent store coordinator for the application. This implementation creates and return a coordinator, having added the store for the application to it. This property is optional since there are legitimate error conditions that could cause the creation of the store to fail. 
// Create the coordinator and store 
var coordinator: NSPersistentStoreCoordinator? = NSPersistentStoreCoordinator(managedObjectModel: self.managedObjectModel) 
let url = self.applicationDocumentsDirectory.URLByAppendingPathComponent("MyLog.sqlite") 
var error: NSError? = nil 
var failureReason = "There was an error creating or loading the application's saved data." 
if coordinator!.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: url, options: nil, error: &error) == nil { 
    coordinator = nil 
    // Report any error we got. 
    var dict = [String: AnyObject]() 
    dict[NSLocalizedDescriptionKey] = "Failed to initialize the application's saved data" 
    dict[NSLocalizedFailureReasonErrorKey] = failureReason 
    dict[NSUnderlyingErrorKey] = error 
    error = NSError(domain: "YOUR_ERROR_DOMAIN", code: 9999, userInfo: dict) 
    // Replace this with code to handle the error appropriately. 
    // abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. 
    NSLog("Unresolved error \(error), \(error!.userInfo)") 
    abort() 
} 

öğreticiler.

let mOptions = [NSMigratePersistentStoresAutomaticallyOption: true, 
    NSInferMappingModelAutomaticallyOption: true] 

cevap

8

seçenekleri olması gerekiyor göç: Bir CoreData sınıfı yoksa, ben gibi hafif kod eklemek nerede, sadece orijinal CoreData öğretici bir göz atın ve bana söylemek için birine ihtiyacım Kalıcı mağazaya kalıcı mağaza koordinatörü ekleyen çağrıda kullanılır. addPersistentStoreWithType için bir arama yaparak bu kod satırını kolayca bulabilirsiniz.

try coordinator!.addPersistentStoreWithType(
    NSSQLiteStoreType, configuration: nil, URL: url, options: mOptions) 

Büyük olasılıkla Çekirdek Veri yığını AppDelegate sınıfında, ama nerede olduğunu taşıma seçenekleri eklemek zorunda nerede olursa olsun, bu.

+0

Teşekkür ederiz! 1:00 ama sabahları deneyecek ve işe yararsa doğru işaretleyecektir. Bahsettiğim sınıfın ne olduğu konusunda da bir şansın var mı? Neden, bu derste, sınıf tarafından ele alınan kalıcı mağaza mı? –

+0

Teşekkür ederim, bu işe yaramış görünüyor. Bir geçişi gösteren öğreticide gördüğüm konsol çıktısını almadım, ancak öznitelikleri ve varlıkları ekledim ve uygulamayı çalıştırdım ve hiç sorunum olmadı. –