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

  • Capcom Unity

    Capcom Unity

    5 NİSAN 2010
  • superemposed

    superemposed

    25 Aralık 2007
  • The Onion

    The Onion

    14 Mart 2006