SORU
2 Aralık 2009, ÇARŞAMBA


iPhone Core Data "Otomatik Hafif Göç"

Çekirdek veri deposu uygulayan bir uygulamayı güncellemek için çalışıyorum. Varlık için bir öznitelik ekliyorum.

Temsilci benim sınıf için aşağıdaki kodu ekledim:

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {

    if (persistentStoreCoordinator != nil) {
        return persistentStoreCoordinator;
    }

    NSURL *storeUrl = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"Shoppee.sqlite"]];

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

    NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
    						 [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
    						 [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];

    if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:options error:&error]) {
    	NSLog(@"Error: %@",error);
    	NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
    	abort();
    }    

    return persistentStoreCoordinator;
}

Bu, aşağıdaki URL oldu: Doc

Bu kodu çalıştırırken aşağıdaki hatayı alıyorum:

2009-12-01 20:04:22.877

Shoppee[25633:207] Hata: Hata

Etki Alanı==134130 Kodu NSCocoaErrorDomain

Kullanıcı bilgisi=0x1624d20 "Işlem tamamlanamadı. (Kakao hata 134130.)" 2009-12-01 20:04:22.879 Shoppee[25633:207] Çözülmeyen hata Hata Etki alanı==134130=NSCocoaErrorDomain Kodu Bilgisi 0x1624d20 "İşlem tamamlanamadı. (Kakao hata 134130.)", { URL =:///Users/Eric/Library/Application Support/iPhone Simülatörü/Kullanıcı/Uygulama/A8A8FB73-9AB9-4EB7-8F83-82F5B4467AF1/Belgeler/Uygulamam localhost dosya.sqlite; = meta { NSPersistenceFrameworkVersion = 241; = NSStoreModelVersionHashes { Madde = &; 869d4b20 088e5c44 5c345006 67ab9bc4 87d245cd lt 14cadf45 180251e9 f741a98f>; Store= &; 47c250f4 895e6fd1 5033ab42 7819ba75 22d2d493 lt 3c0acffc 2dc54515 8deeed7a>; }; NSStoreModelVersionHashesVersion = 3; = NSStoreModelVersionİdentifiers ( ); NSStoreType = SQLite; NSStoreUUİD = "8DC65301-3BC5-42BE-80B8-E44577B8F8E1"; }; neden = "kaynak deposu için model bulamadım"; }

Ben bir şekilde orijinal veri modeli eklemek gerekir gibi görünüyor ama bunu nasıl emin değilim. Herhangi bir öneriniz var mı?

CEVAP
2 Aralık 2011, Cuma


/Tam kılavuz özetlemek gerekirse:

  1. Herhangi bir değişiklik yapmadan önce, yeni model bir sürümünü oluşturun.

    Böyle büyük mükafat 4: Select * - ^ * 3 . Editör ->Model Sürümü Ekleyin.

    Böyle Büyük Mükafat 3: Tasarım ->Veri Modeli ->Model Sürümü Ekleyin.

    .xcdatamodel yeni oluşturulmuş olduğunu göreceksiniz.xcdatamodeldklasör de yok eğer varsa oluşturulur.

  2. Kaydet.

  3. .xcdatamodel yeni seçin ve the Lightweight Migration documentation uygun istihdam etmek istediğiniz değişim siz olun.

  4. Kaydet.

  5. Yeni oluşturulan şema için geçerli/aktif şemasını ayarlayın.

    İle.xcdatamodeldSeçili klasörü:

    Böyle büyük mükafat 4: Yardımcı Programlar - ^ Kenar Çubuğu . Dosya Müfettiş ->Sürüm Bilgisi Temel Veri Modeli ->Yeni şema seçin.

    Böyle Büyük Mükafat 3: Tasarım >Veri Modeli >Güncel Sürüm.

    .xcdatamodel simgesinin üzerinde yeşil tik yeni şema için hareket edecek.

  6. Kaydet.

  7. Zamanında göç gerçekleştirmek için gerekli kodu uygulayın.

    Nerede NSPersistentStoreCoordinator oluşturulur (genellikle AppDelegate sınıf), options parametre için, aşağıdaki kodla nil değiştir:

    [NSDictionary dictionaryWithObjectsAndKeys:
                      [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, 
                      [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil]
    
  8. Uygulamayı çalıştırmak. Eğer kaza ise yok, muhtemelen göç:). başarılı

  9. Başarılı bir şekilde geçirilmesi, geçiş kodu (adım 7) çıkarılabilir. (Geliştirici için yayınlanan bir uygulama kullanıcıları göç etmiş olabilir belirlemek için.)

ÖNEMLİ:Eski model sürümleri silmeyin/şemalar. Temel Veri yeni sürüme geçirmek için eski sürümü gerekiyor.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • expertvillage

    expertvillag

    5 NİSAN 2006
  • NikkoNantone

    NikkoNantone

    21 Kasım 2011
  • schmittastic

    schmittastic

    9 EYLÜL 2009