2014-04-11 17 views
6

Uygulamamın içinden küçük miktarlarda veri kaydederken NSUserDefaults veya 'u kullanmak daha iyi olur mu? Şu anda NSCoding (encodeWithCoder/initWithCoder, vb.) Kullanıyorum ancak NSUserDefaults'un daha basit olabileceği görünüyor. Benim toplam veri hakkında sadece birkaç düzine toplam Ints/Strings/MutableArray çeşitli hakkında.NSUserDefaults vs NSCoding

+1

oluşturulan bir Plist dosyası kullanmak benim tercihtir. NSUserDefaults'a bir şey kaydetmek için NSCoding'i kullanabilirsiniz, bu yüzden hangi karşıtlığı çizmeye çalışıyorsunuz? – matt

+0

İstediğiniz gibi geliyor "NSPropertyListSerialization". – iluvcapra

+1

Mat daha da ileri sürüldü, NSCoding hiç bir depolama mekanizması değildir. Kodlanmış verilerinizle ne yapıyorsunuz? NSUserDefaults kullanarak karşılaştırmanız gereken budur. – rmaddy

cevap

4

NSCoding ile "nesneleri NSCoding API'leriyle serileştirdikten sonra dosyaları kaydetme" anlamına gelir. Her iki yaklaşım da ilkel veri türleri için geçerli olsa da, karmaşık yapılara sahip nesneleri serileştirmeye başladığınızda NSUserDefaults yaklaşımı daha da zorlaşır. Buna karşılık, dosyalara NSCoding sınıflarının verilerinin kaydedilmesi, nesne yapısı açısından yüksek derecede esneklik sunar. Gelecekte bu esnekliğe ihtiyaç duymayacağınızı biliyorsanız, NSUserDefaults; emin değilseniz dosyalar ile kal.

+0

Evet, senin varsayımın doğru (benim sorum daha açık belirtilmiş olmalıydı). Zaten çalışıyor olduğundan NSCoding/dosya yöntemiyle uğraşacağım. Teşekkürler. – wayneh

0

programlı Sen portakal ile elma karşılaştırarak konum

NSString *appFile; 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    appFile = [documentsDirectory stringByAppendingPathComponent:@"myFile"]; 
    //this creates the file path 


    NSDictionary* tempDict = [[NSDictionary alloc]initWithContentsOfFile:appFile]; 
    //this gets the data from storage 

    [tempDict writeToFile:appFile atomically:YES]; 
    //this updates the data to storage