Chcę ustawić niektóre wartości początkowe dla moich kluczy NSUserDefault, tak aby pierwsze uruchomienie aplikacji miało pewne rozsądne ustawienia początkowe. Pomyślałem, że mam prosty sposób na zrobienie tego w pakiecie aplikacji .plist, ale teraz nie mogę go znaleźć. Jakieś pomysły?Jak ustawić wartości początkowe dla kluczy NSUserDefault?
Odpowiedz
Należy zastosować metodę NSUserDefaults
registerDefaults
. Przygotuj plik plist w pakiecie, który zawiera domyślne preferencje, a następnie użyj tego pliku plist do zarejestrowania wartości domyślnych.
NSString *defaultPrefsFile = [[NSBundle mainBundle] pathForResource:@"defaultPrefs" ofType:@"plist"];
NSDictionary *defaultPreferences = [NSDictionary dictionaryWithContentsOfFile:defaultPrefsFile];
[[NSUserDefaults standardUserDefaults] registerDefaults:defaultPreferences];
Musisz wykonać ten kod przy każdym uruchomieniu aplikacji. Doda te wartości do oddzielnej domeny w hierarchii domyślnych użytkowników. Ilekroć domyślne ustawienia użytkownika Twojej aplikacji nie zawierają wartości dla określonego klucza, NSUserDefaults
powróci do tej domeny i pobierze z niej wartość.
Wygląda na to, że rejestruje wartości domyślne w ulotnej lokalizacji pamięci. Nie chcę, aby w ogóle często powracał do wartości domyślnych. Dotyczy to głównie pierwszego uruchomienia. Czy wartości ustawione przez użytkownika zostaną zachowane, czy też czasami będą nadpisywane przez to? – Suz
Co rozumiesz przez "ulotną lokalizację pamięci"? Musisz wykonać ten kod przy każdym uruchomieniu aplikacji. Doda te wartości do oddzielnej domeny w hierarchii domyślnych użytkowników. Ilekroć domyślne ustawienia użytkownika Twojej aplikacji nie zawierają wartości dla określonego klucza, 'NSUserDefaults' powróci do tej domeny i pobierze z niej wartość. –
Podręcznik programowania ustawień domyślnych użytkownika wymienia nazwę NSRegistrationDomain jako stan "lotny", a nie "trwały". Tak więc same ustawienia domyślne użytkownika są trwałe, a wartości domyślne są niestabilne i muszą być ponownie ładowane przy każdym uruchomieniu aplikacji. Po prostu wydaje mi się dziwne, że wartość "cofnij" jest mniej trwała niż ustawienie użytkownika. – Suz
if ([[[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] allKeys] containsObject:@"initialValuesHaveBeenWritten"])
{
[[NSUserDefaults standardUserDefaults] setValue:obj1 forKey:key1];
[[NSUserDefaults standardUserDefaults] setValue:obj2 forKey:key2];
[[NSUserDefaults standardUserDefaults] setValue:obj1 forKey:@"initialValuesHaveBeenWritten"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
NB: Nie testowane, wykonane z pamięci
To naprawdę nie jest właściwy sposób na to. Działa, ale nie sugeruje tego Apple. Użyj -registerDefaults jak opisano w odpowiedzi @ole lub dodaj je bezpośrednio do domeny NSRegistrationDomain. –
Zgadzam się. Nie wiedziałem o registerDefaults, kiedy napisałem tę odpowiedź, ale używam jej teraz. –
Jeśli masz wiele wartości domyślne, niech używać ola's answer, inaczej to jest dobre na kilka params
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if (![defaults boolForKey:USERDEFAULT_IS_INITIALIZED]) {
[defaults setBool:YES forKey:USERDEFAULT_IS_INITIALIZED];
// Set initial values
...
[defaults synchronize];
}
-(void) loadDef
{
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
_removeAd=[userDefaults boolForKey:SAVE_AD_STATUS];
NSString* strDefSetting=[userDefaults stringForKey:SAVE_STATUS_ADSETTING];
if(strDefSetting==nil
||[strDefSetting isEqualToString:@""]
)
{
[email protected]"0.5";
}
_floatAdmob=strDefSetting.floatValue;//0.5;
}
- 1. Różnica między pękiem kluczy a NSUserDefault?
- 2. Początkowe wartości właściwości kontekstu dla wyszukiwania EJB
- 3. Czy należy ustawić początkowe wartości ciągu java z null na ""?
- 4. Django: Jak ustawić wartości początkowe dla pola w formularzu modelu wbudowanego?
- 5. Jak znaleźć dobre wartości początkowe dla funkcji nls?
- 6. Zaktualizuj wartości wielu kluczy
- 7. Jak początkowe uruchamianie dla NHibernate Profiler
- 8. Jak ustawić wartości domyślne dla widżetów IPython?
- 9. Nie można ustawić tajnej wartości w skarbcu kluczy Azure
- 10. IOS: przechowywać tablicę z NSUserDefault
- 11. Dlaczego zmienne lokalne muszą mieć wartości początkowe
- 12. Jak skonfigurowaćParse plik zachowując wiele wartości dla identycznych kluczy?
- 13. Wartości wyszukiwania słownika języka Python dla kluczy używających wyrażeń regularnych
- 14. Ustawienie początkowe wartości dyrektywy Kątowymi-UI Wybór2 wielokrotny
- 15. NSUserDefault zmiana obsługi powiadomień w watchppExtension
- 16. Jak uzyskać początkowe hasło administratora dla Jenkins na Macu?
- 17. Jak ustawić domyślne wartości właściwości dla poppera bootstrap twitter?
- 18. Jak ustawić kolory dla wartości wydruku w serii zewnętrznej ZingChart
- 19. Jak zaimplementować obserwowanie wartości kluczy w obiekcie NSMutableArray
- 20. Przekazywanie początkowe do ModelFormSet Django
- 21. JavaScript usunąć wartości z tablicy kluczy obiekt
- 22. Jak wygenerować "Magazyn kluczy" dla Google Play?
- 23. Jak ustawić minimalne i początkowe szerokości NSSplitView przy użyciu automatycznego układu?
- 24. utworzyć słownik z tablicami kluczy i wartości
- 25. Jak ustawić listę rozwijaną do wielu wartości?
- 26. Wiele poziomów kluczy i wartości w Pythonie
- 27. Angularjs - jak ustawić wartości modułów w usłudze?
- 28. Dodaj wartości dopasowanych kluczy w tablicy obiektów
- 29. Jak ustawić domyślne wartości boolowskie w JavaScript?
- 30. Jak wykonać głębsze dopasowanie kluczy i wartości z assertj
Sprawdź to: http://jayprakashdubey.blogspot.in/2014/07/nsuserdefault -usage.html –