SORU
14 AĞUSTOS 2011, Pazar


NSUserDefaults veya bir plist verileri saklamak için kullanılır?

Bir kaç dize (belki 10-20) depolama olacak. Eğer NSUserDefaults onları kurtarmak, ya da onları bir plist yazma için kullanmam gerektiğinden emin değilim. En iyi uygulama olarak kabul edilir? NSUserDefaults kod az hatları, bu nedenle uygulamak için daha hızlı gibi görünüyor.

Bu dize değerleri eklendi/kullanıcı tarafından kaldırılacak eklemek istiyorum.

CEVAP
14 AĞUSTOS 2011, Pazar


Bir dizi varsayıyorum, ama sözlükler çok işe yarayacak.

Userdefaults, Temel Veri ve Plists/yazma ama eğer koyduğun şeye dikkat etmeniz gereken bir plist kullanırsanız okuyabilirsiniz. Plist kısmı aşağıya bakınız.

Çekirdek Veri ben çok fazla abartılı şekilde düşünüyorum, sadece dizeleri. Daha karmaşık nesneleri kalıcı istediğinizde kullanılması gerekiyor.

NSUserDefaults:

Sadece kullanıcı ayarlarını depolamak gerekiyor ama çok hızlı ve kolay yapmak için. Bu userdefaults için bunları yazmak için:

NSArray *stringsArray = [[NSArray alloc] arrayWithObjects: string1, string2, string3, nil];
[[NSUserDefaults standardUserDefaults] setObject:stringsArray forKey:@"MyStrings"];
[[NSUserDefaults standardUserDefaults] synchronize]

Bu userdefaults okuma:

NSArray *stringsArray = [[NSUserDefaults standardUserDefaults] objectForKey:@"MyStrings"];

Plıst:

Eğer dizeleri değiştirilmesi için gidiyoruz ve uygulama kaynaklarına yazabilir mi bir plist ama cant yazmak okumak gerekir.

  1. Okuma/yazma plist önce belgeler dizini bulun

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *stringsPlistPath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"Strings.plist"];
    
  2. Dizi (dizeleri string1, ... olduğunu varsayıyorum) oluşturun

    NSArray *stringsArray = [[NSArray alloc] arrayWithObjects: string1, string2, string3, nil];
    
  3. bu dosya için yazma

    [stringsArray writeToFile:stringsPlistPath atomically:YES];
    

Bu plist okumak için:

  1. belgeler dizin bulun

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *stringsPlistPath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"Strings.plist"];
    
  2. okudum:

    NSArray *stringsArray = [NSArray arrayWithContentsOfFile:stringsPlistPath];
    

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • hockeywebcasts

    hockeywebcas

    31 EKİM 2012
  • Majestic Casual

    Majestic Cas

    28 NİSAN 2012
  • Matthew Smith

    Matthew Smit

    24 Mayıs 2010