2012-03-07 24 views
7

Uygulamada, verilerin çoğunu devam ettirmek için Çekirdek Verileri kullanan bir uygulamam var. İstisna, görüntüleri saklamaktır. Alt dizinlerdeki görüntüleri Belgeler dizinine depolarım ve çekirdek veri deposundaki ilgili nesne özniteliğinde bu görüntüye bir NSURL başvurusu depolarım.Uygulama Güncellemeleri, NSURL ve Belgeler Dizini

Bir güncelleştirme uygulama mağazasına geldiğinde, bu resimlerin, uygulamanın önceki sürümünde depolanmış olan referanslar kullanılarak bulunmadığını ve bu nedenle görüntülenmediğini fark ettik. Şimdi, sorun şu ki, test için geliştirme aygıtlarını kullandığımız için, bu uygulama, dev uygulamanın kullandığı Uygulamalar dizinindeki Dizin, App Store'un oluşturduğu/kullandığı uygulamadan farklı olduğu için yayılıyor. Uygulamalarda uygulama için App store dizini ile Xcode'taki hata ayıklama işlemleri sırasında oluşturulanlar arasındaki farkları fark ettim. Bu nedenle, çekirdek verilerinde saklanan URL yanlış uygulamalar klasörüne işaret eder. Bu, yeni bir sürüm mağazada yayımlandıktan sonra, eski bir uygulama sürümünü indiremediğimden hata ayıklamak biraz zor.

Birkaç sorum var. Aynı uygulamanın sürümlerini indiren kullanıcıların aynı olamayacağı Uygulamalar alt dizininin, geliştirilmeyen cihazlar için sorun oluşturmayacağını garanti edebilir miyim?

Bu kaynakların konumunu göstermek için göreli resim URL'lerini veya dizgilerini depolamalı mıyım, yoksa mutlak URL'ler olan şeyleri saklamakla iyi olmalı mıyım? Sen dosyalarına başvuru depolamak için göreli URL'ler kullanmalıdır

NSString *appDocumentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; 

cevap

13

:

Çok teşekkürler, Felipe

+0

Çok teşekkür ederim! Bu benim bilmem gereken şeydi! – flizit

+2

iTunes güncellemeleri yüklediğinde yeni bir uygulama dizininin yaratıldığını bilmiyordum: geçersiz kılınmış mutlak yollar kullanarak sembolik bağlara sahip oldum. Bu davranış iOS geliştiriciler dikkat! :) –

+0

Bu bağlantı bozuk. Deneyin: https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/PerformanceTips/PerformanceTips.html –

0

ne aradığınız aşağıdaki olduğunu düşünüyorum. Mutlak URL App Güncellemeler kullanıcı bir uygulama güncellemesini indirir

sırasında bir uygulama güncellemesinde

Dosyalar Kayıtlı sonra olası değişme, iTunes yeni bir uygulama dizininde güncellemesini yükler. Daha sonra eski yüklemeyi silmeden önce eski yüklemeden kullanıcının veri dosyalarını yeni uygulama dizinine taşır. Aşağıdaki dizinlerde dosyalar güncelleme işlemi sırasında korunacaktır garanti edilir:

  • Application_Home/Belgeler
  • Application_Home/Kütüphane

diğer kullanıcı dizinleri dosyaları rağmen ayrıca üzerinde hareket edebilir, Bir güncelleme sonrasında mevcut olmaları için güvenmemelisiniz.

kum havuzuna

https://developer.apple.com/library/ios/#DOCUMENTATION/iPhone/Conceptual/iPhoneOSProgrammingGuide/PerformanceTuning/PerformanceTuning.html

Thx, uygulama ev aynı zamanda kullanıcı ev sahipliği yapmaktadır. Dolayısıyla, kullanıcı evine kısa bir el olan unix tilde, yani, ~/Documents, ~/Library ve benzerlerinin kullanılması mümkündür.

Tam yolunu göreceli bir yola dönüştürmek için -[NSString stringByAbbreviatingWithTildeInPath] kullanın.Ve -[NSString stringByExpandingTildeInPath] ile ters çevirin.

İlgili konular