Mam klasę AppDelegate z metodą +(void)initialize
, której używam do rejestrowania niektórych wartości domyślnych. Oto kod, który używam:Jak zarejestrować domyślne ustawienia użytkownika za pomocą NSUserDefaults bez nadpisywania istniejących wartości?
+ (void)initialize {
NSDictionary *defaults = [NSDictionary dictionaryWithObjectsAndKeys:@"NO", @"fooKey", @"YES", @"barKey", nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:defaults];
}
ja również stworzony Preferences.xib który posiada kilka pól wyboru (NSButton
), że stan wyświetlacza preferencji. Są one powiązane z NSUserDefaultsController
tymi samymi kluczami (w tym przypadku klucz fooKey i barKey). Za każdym razem, gdy uruchamiam aplikację i zmieniam "domyślne ustawienia", są one przywracane przy następnym uruchomieniu aplikacji.
Czy istnieje sposób zarejestrowania "domyślnych wartości domyślnych" bez nadpisywania istniejących wartości? Może za każdym razem, gdy buduję i uruchamiam aplikację, jej plik preferencji jest odtwarzany? Może powinienem odłączyć pola wyboru od NSUserDefaultsController
i zachować wartości kluczy osobiście za pomocą niestandardowego kodu w oknie kontrolnym preferencji?
Chciałbym usłyszeć waszą implementację wyboru dla utrzymania domyślnych ustawień użytkownika.
Używam Mac OS X 10.6.2 i XCode 3.2.1
Upewnij się, że pola wyboru są zobowiązane do "Wspólna domyślne obsługi kontrolera", klucz kontrolera "wartości", model kluczowych ścieżek "fooKey"/"Barkey". W przeciwnym razie twój kod wygląda dla mnie dobrze. – Costique
'@" NIE "' nie jest literałem boolowskim; jest literałem napisowym dla słowa "NIE". Powinieneś użyć '[NSNumber numberWithBool: NO]'; w przeciwnym razie wartości w domyślnych ustawieniach użytkownika nie będą wartościami logicznymi. –
Nie, nie będą, ale jeśli przeczytam je jako BOOL - będą. Fragment książki Daniela H Steinberga "Cocoa Programming" (pragprog.com): Właściwie nie musisz być tak jednoznaczny, gdy umieścisz BOOL w słowniku. Możesz przekazać wartość TAK lub NIE jako ciąg i nadal tworzyć BOOL z tej wartości, gdy czytasz z preferencji. – Eimantas