2010-11-02 26 views
19

Bir grup veriyi serileştirmek ve bir dosyaya kaydetmek istiyorum, sonra onu yükleyebilmem (doğal olarak) ve yazdığım bir özellik ile tekrar oynayabiliyorum. (Terminolojim kapalıysa üzgünüm, bu tür bir şeyle acemi yaşıyorum.) Bunu iOS ile yapmanın en iyi yolu nedir? Ben (? Belgeler) uygun depolama dizini kök bulmak için NSSearchPathForDirectoriesInDomains kullanmak ve sonra oluşturmak bu veriler tamponlarını saklamak ve bunları yazmak için NSData kullanması gerektiğini topladıktaniOS'ta veri kaydetme seçenekleri nelerdir?

Standard Application Behaviors Guide

: Burada belgelere bakarak dosyalamak. Bununla ilgileniyor muyum yoksa yanlış mı anladım? Başka bir adaçayla ilgili tavsiye?

+4

Bir yanıt kabul et? – golddove

cevap

1

Evet, oldukça doğru yön. & arşivini NSData'ya arşivleyebilmeniz için nesnenizde NSCoding protokolü denen bir şey uygulamanız gerekir. Bkz. Örnek:

18

Plist'i kullanabilirsiniz.
Çekirdek verileri kullanmadan dize veya diğer veri listesini kaydetmek çok kolaydır.
Örneğin Property List Programming Guide

Bkz bir dizi veya bir sözlük olabilecek bir nesneye (rootObj) kurtaracak bu kodu:

NSString *error; 
NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
NSString *plistPath = [rootPath stringByAppendingPathComponent:@"yourFile.plist"]; 
NSData *plistData = [NSPropertyListSerialization dataFromPropertyList:rootObj 
                   format:NSPropertyListXMLFormat_v1_0 
                errorDescription:&error]; 
if(plistData) { 
    [plistData writeToFile:plistPath atomically:YES]; 
} 
else { 
    NSLog(@"Error : %@",error); 
    [error release]; 
} 

desteklenen sınıf bazı sınırlama yoktur

(kılavuzuna bakın)
+4

dataFromPropertyList kullanımdan kaldırılmıştır. – Jackson

+0

Hata: ARC, 'yayınlama' mesajının açık gönderilmesini yasaklıyor – Kamal

13

Yazdığınız verilere göre değişir. Çoğunlukla nesneleri serileştirmek istiyorsanız, NSCoding protokolüne bakın. Sınıf olmayan bazı basit veri yapınız varsa, bunu NSDictionary içine saklayabilir ve bunu bir plist içine kaydedebilirsiniz. Ve eğer büyük bir veri parçanız varsa (binlerce şamandıra veya bunun gibi bir şey), daha önce yazdığınız gibi NSData'u kullanarak bunu kaydetmek isteyebilirsiniz. Her durumda Archives and Serializations Programming Guide'u okuduğunuzdan, tekerleği yeniden icat etmediğinizden emin olun.