2012-05-23 4 views
1

NSDefaults의 값을 저장/저장하는 방법을 알고 싶습니다. 응용 프로그램을 종료 할 때 Settings.bundle에 저장됩니다. 이 NSUserDefaults의 값을 설정 번들에 저장하는 중

NSLog(@"IDMissiles: %@", [userDefaults stringForKey:@"IDMissiles"]); 
NSLog(@"IDGuns : %@", [userDefaults stringForKey:@"IDGuns"]); 
NSLog(@"IDBombs : %@", [userDefaults stringForKey:@"IDBombs"]); 
NSLog(@"IDDistance: %@", [userDefaults stringForKey:@"IDDistance"]); 

그러나 ... 때마다 내가 용 애플리케이션을 실행 ... 다음과 같은 처리를 할 경우

NSDictionary *settings = [NSDictionary dictionaryWithObjectsAndKeys:@"M1", @"IDMissiles", 
                    @"G2", @"IDGuns", 
                    @"B3", @"IDBombs", 
                    @"KM", @"IDDistance", nil]; 
[[NSUserDefaults standardUserDefaults] registerDefaults:settings]; 

는, 값이 NSUserDefaults에서 제대로 인쇄 ... 내가 뭐하는 거지입니다 NSUserDefaults의 값은 (null)로 시작합니다. 나는 [[NSUserDefaults standardUserDefaults] synchronize];이 다음에 응용 프로그램을 실행할 때 값을 저장할 것이라고 생각했지만, 그런 행운은 없습니다.

+0

이 참조/instm/NSUserDefaults/registerDefaults : – Hector

+0

등록 도메인의 내용은 디스크에 기록되지 않습니다. 응용 프로그램이 시작될 때마다이 메서드를 호출해야합니다. – Hector

답변

1

한 가지 내가 발견 한 settings.bundle로 작업 할 때 설정 창을 실제로 열어야 값이 초기화되지 않습니다. 거기에 기본값을 저장할 수는 있지만 설정을 열 때까지 nil을 반환합니다.

값을 저장하려고 시도하지만 설정 창을 열지 않은 경우 이런 일이 발생하는지 잘 모르겠습니다.

설정 창을 사용하지 않는 경우 registerDefaults 옵션을 사용하지 않을 것입니다.

대신 사용해보십시오. documentation에서

[[NSUserDefaults standardDefaults] setObject:@"M1" forKey:@"IDMissiles"]; 
// set remaining values 
[[NSUserDefaults standardDefaults] synchronize]; // this really only needs to be called if you plan on accessing values right away, otherwise they are saved automatically after the next run loop 
2

대신

[[NSUserDefaults standardUserDefaults] registerDefaults:settings]; 

를 사용하는이 시도 :

[[NSUserDefaults standardUserDefaults] setObject:settings forKey:@"settings"]; 

를 그런 다음, 다음과 같이 기본 설정에서 얻을 :

NSLog(@"IDMissiles:%@[[[NSUserDefaultsstandardUserDefaults]objectForKey:@"settings"]objectForKey:@"IDMissiles"]); 
1

:

등록 도메인의 내용이 디스크에 기록되지 않습니다 응용 프로그램이 시작될 때마다이 메소드를 호출해야합니다. plist 파일을 응용 프로그램의 Resources 디렉토리에 넣고 해당 파일에서 읽은 내용으로 registerDefaults :를 호출 할 수 있습니다.

즉, 이와 같은 기본값을 등록하여 아무것도 저장하지 않습니다. 앱과 설정 번들 모두에 기본값을 설정하려면 here과 같이 별도로 설정 번들을 유지해야합니다. https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/nsuserdefaults_Class/Reference/Reference.html#//apple_ref/occ [registerDefaults (:

0
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; 
    [NSUserDefaults removeObjectForKey:@"userDefaults"]; 
    [userDefaults setObject:[settings objectForKey:@"mainData"] forKey:@"userDefaultsValue"]; 
    [userDefaults synchronize]; 
관련 문제