SORU
19 HAZİRAN 2009, Cuma


Benim için Çekirdek Veri modelleri otomatik olarak geçirmek için ne yapmak?

Otomatik /ile ilgili belgelerinde Çekirdek Veri modelleri için hafif göç okumadım ama bunu uygulama gerçekte sorunları yaşıyorum.

Anladığım kadarıyla uygulama ve aygıt üzerinde var olan model var bu model zaten aynı olmadığını fark etmeli. Ancak o zaman öznitelikleri veya ilişkiler ve benzeri basit değişiklikler eklediğiniz modeli otomatik olarak güncellenmelidir.

Herhangi bir işaretçiler - güncellemelerinden bir şey ayarlamak gerekiyor mu?

CEVAP
19 HAZİRAN 2009, Cuma


Bu oldukça basit olduğunu şimdi öğrendim - eğer nereye bakılacağını bilmek bir kez.

Benim AppDelegate-up koyduğum NSPersistentStoreCoordinator - ve bunun için bazı seçenekleri otomatik geçiş işlemek için söylemek eklemek gerekir:

NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:

[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,

[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];

NSError *error;
_persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel: [self managedObjectModel]];

if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:options error:&error]) {
    // Handle error
    NSLog(@"Problem with PersistentStoreCoordinator: %@",error);
}

O zaman böyle büyük mükafat küçük bir hile yapmak gerekir:

  1. Senin xcdatamodel dosyası seçin
  2. Üst Tasarım Menü - Veri Modeli sonra Ekleyin Modeli Versiyonu seç
  3. Senin xcdatamodel dosyası olacak o zaman taşındı içine yeni bir dizin ile aynı adı gibi xcdatamodel dosyası ama uzantısı xcdatamodeld olacak bir ikinci dosya bu dizin ile 2 ad. Yeni dosya ve Tasarım -^ seçin . Veri Modeli->Set Geçerli Sürüm (in Xcode 4 you do this)
  4. Eğer zaten uyumsuz projenizin neden değişiklik yaptıysanız orjinal xcdatamodel dosyası bu değişiklikler. Eğer Henüz bir değişiklik varsa, o zaman sadece 2 düzenleyin.dosya (sadece güncel versiyonu yapılmış) xcdatamodel.
  5. Şimdi eski model bir cihaz üzerine bu sürümü yüklediğinizde otomatik olarak yeni model için bu model yükseltir.

Bu harika görünüyor ve ben istedim o kadar basit - ama bir model değişikliği olarak gelişimi sırasında dikkatli olmak gerekir bence, aksi takdirde her değişiklik için yeni bir sürüm oluşturmak zorunda kalacaksınız.

Sanırım ne yapacağım ki ben sürekli değiştirilen dosyaları ve daha sonra bir kez olsun hazır dağıtmak benim güncelleriz sil tüm arasında dosyaları ve dağıtmak olan en eski ve en yeni modeller.


GÜNCELLEME (15/07/2011):

Apple belgelerine güncelleme var işaret için @rockstarberlin için teşekkürler

Xcode 4: Setting a Managed Object Model’s Current Version

Güncelleme: 8/19/2013 daha iyi bağlantı:

https://developer.apple.com/library/ios/documentation/cocoa/Conceptual/CoreDataVersioning/Articles/vmModelFormat.html

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Cole Rolland

    Cole Rolland

    23 Kasım 2008
  • The Amazing Atheist

    The Amazing

    20 Kasım 2006
  • The Onion

    The Onion

    14 Mart 2006