SORU
14 EKİM 2009, ÇARŞAMBA


Nasıl iPhone üzerinde yazılabilir bir yol alabilir miyim?

Bu tam bir cevap orijinal geçerli değildi bulduğumda başka bir yazı için ben yazdım. çünkü bu soru gönderiyorum ama boşa harcamak için çok yararlı olduğunu düşündüm. Böylece de diğerleri et soru ve cevap(lar), böylece bu topluluk wiki çıkardım. Eğer cevap yararlı bulursanız, lütfen soru - topluluk wiki olmak oy bu oy için puan almalıyım değil ama diğerleri onu bulmanıza yardımcı olacaktır

Nasıl hangi dosyaya yazar bir yolu iPhone'da izin alabilir miyim? Simülatör üzerinde istediğiniz yere (aygıt) yazabilirsin, ama iPhone sadece belirli yerlerde içine yazmak için izin verilir.

CEVAP
14 EKİM 2009, ÇARŞAMBA


Düşünün yazılabilir yolları üç tür vardır - ilk iTunes üzerinden tutun ve kullanıcı için kullanılabilir yapmak istediğiniz şeyleri depoladığınız Belgeleri, (3.2):

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

İkincisi, ve çok benzer Belgeler dizini, Kütüphane klasörü nerede saklamak yapılandırma dosyaları ve yazılabilir veritabanlarına da devam etmek istiyorum, ama istemiyorsun kullanıcı yapabilmek için mess ile iTunes:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *libraryDirectory = [paths objectAtIndex:0];

Not bu halde kullanıcı göremez dosyaları iTunes kullanarak bir cihaz daha eski 3.2 (iPad), NSLibraryDirectory sabit olmuştur kullanılabilir beri iPhoneOS 2.0 için kullanılabilir oluşturur hedefleme 3.0 (veya daha önceki Eğer hala yapıyor). Ayrıca Kullanıcı değil, insan gözünün görebileceği bir şey olmadığı sürece bayrak bir uygulama olarak izin kullanıcıları değiştirmek için belgeler, çok kullanıyorsanız, Belgeleri bugün sen iyi olduğun sürece yer değişikliği ne zaman güncelleme desteği Kullanıcı belgeleri.

Uzun vadede mevcut umurunda olmadığını ya da değil resimler koyabilirsiniz son önbellek bir dizin var, (telefonu bir noktada onları silmek olabilir)

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *cachePath = [paths objectAtIndex:0];
BOOL isDir = NO;
NSError *error;
if (! [[NSFileManager defaultManager] fileExistsAtPath:cachePath isDirectory:&isDir] && isDir == NO) {
    [[NSFileManager defaultManager] createDirectoryAtPath:cachePath withIntermediateDirectories:NO attributes:nil error:&error];
}

Ve her zaman kontrol oluşturmak için yazarken aslında Önbelleğe dizin oluşturmak için orada olduğunu unutmayın, bu yüzden! Biraz acı, ama bu böyledir.

Yazılabilir bir yol varsa, sen gibi üzerine bir dosya adı ekleyin:

NSString *filePath =  [documentsDirectory stringByAppendingPathComponent:@"SomeDirectory/SomeFile.txt"];

ya

NSString *filePath =  [cachePath stringByAppendingPathComponent:@"SomeTmpFile.png"];

Okuma veya yazma için bu yolu kullanın.

Yukarıdaki örnek dize kullanarak bu yazılabilir yolları, ya da (bir oluşturulduğunu varsayarak) alt dizinler yapabilirsiniz unutmayın.

Eğer yazmaya çalışıyorum bir görüntü içine fotoğraf kitaplığı kullanamazsınız dosya sistem çağrıları yapmak yerine, bir Uİİmage bellek kullanımı UIImageWriteToSavedPhotosAlbum() işlev çağrısı tarafından tanımlanan UİKit. Hedef biçimi veya sıkıştırma düzeyleri üzerinde hiçbir kontrole sahip, ve bu şekilde herhangi bir EXIF takın.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Adam Khoury

    Adam Khoury

    23 Ocak 2008
  • David Tedeyev

    David Tedeye

    20 AĞUSTOS 2011
  • tychoadragmire

    tychoadragmi

    20 Mart 2006