-[NSUserDefaults registerDefaults:] ne işe yarar?
Arasındaki fark nedir:
[[NSUserDefaults standardUserDefaults] registerDefaults:
[NSDictionary dictionaryWithObjectAndKey:anObject, @"something"]];
Ve bu:
[[NSUserDefaults standardUserDefaults] setObject:anObject forKey:@"something"];
CEVAP
Fark, ilk kullanıcı için herhangi bir değişiklik yapmadı. kullanılacak varsayılan kayıt kod parçacığını"". özellik
Çok istiyorsanız sağlamak diyelim ki bir "özellik" anahtar adı 'Hoşgeldiniz', olabilir yerine sahip malları iade nil Ekle varsayılan ileti 'Hoş Geldin ilk kez kullanıcı' görüntülenir zaman vardı, hiçbir değişiklik için özelliği.
Bu "özellik" sıfır döndürür ve eğer bu durumda bir mesaj daha yapın. bu kontrol etmek için if
bir test yazmana gerek yok çünkü mantık kolaylaştıracaktır
NSString *greeting = [[NSUserDefaults standardUserDefaults] stringForKey:@"Greeting"];
if(greeting == nil) {
NSLog(@"Welcome first-time user!");
}
Kod parçacığını yayınlanan ikinci özelliği başka bir değere ayarlanması için kullanılır. Farklı set yöntemleri () setString, setObject, setBoolean değerleri Userdefaults program durumuna göre ayarlamak gerekir.
Yorum istediğiniz gibi DÜZENLEYİN-----Güncelleştirmeleri.
İlk yöntem, adından da anlaşılacağı gibi varsayılan değerler kaydediliyor. İlk kez bazı temel adı ile mülkiyet erişim değeri ya da nesneler için nil, numaralarını mantıksal veya 0 yanlış. Yerine yapıyor bir sürü testler ve eğer öyleyse değerleri değil ayarlanmış program, ve o zaman bir şeyler yap "varsayılan" eylem gibi yukarıdaki örnekte, gemi uygulama ile bazı önceden tanımlanmış değerler için Bu anahtarları.
Bu registerDefaults koymak için tipik bir yer appDelegate içerisinde başlatıcı yöntemi.
Sonra programın başka bir yere, bu alanların değerleri ayarlamak isteyebilirsiniz sonra setObject, setString, setBoolean...ve almak için stringForKey, objectForKey et
Bu gibi düşünün
Bu registerDefaults nesne için mantıklı değerler kaynağı olabilir, yapıcı, aksi zaten yazdığı bazı varsayılan olsun. Eğer kullanmadığınız nesne özelliklerini değiştirmek isterseniz, daha sonra "yapıcı" ama set/get metotları.
Android iPhone benzer NSUserDefaults...
Java ile farklı sonuçlar's digest...
PrintStackTrace ne işe yarar() Java yö...
Nasıl NSUserDefaults özel nesneleri sa...
Neden iPhone SDK NSMutableDictionary k...