2013-03-28 1 views
1

나는 논리 이해가 안 : 나는Settings.bundle ... 내 코드가 [NSUserDefaults standardUserDefaults]를 통해 값에 액세스 할 수없는 이유는 무엇입니까?

[[NSUserDefaults standardUserDefaults] stringForKey:@"mykey1"] 

를 통해 코드에서 액세스 그러나 때 설정 값이 전무 번들 만들 때

을 최대한 빨리이 Settings.app를 통해이 키를 터치로이 키는 내 코드로 읽을 수 있습니다.

솔루션 "Root.plist"파일을 읽고, 사전을 빌드하고, register 값과 synchronize을 필요로합니다.

Apple docu를 여러 번 읽었습니다. 표준 설정으로 앱을 제공하기위한 아이디어와 표준 패턴을 아직 이해하지 못합니다.

내 연구를위한 힌트가 있습니까?

답변

2

Settings.bundle의 존재 여부는 NSUserDefaults에 영향을주지 않습니다. 값이 기본값에서 변경되어 값이 NSUserDefaults에 반영 될 때까지는 아닙니다.

적절한 해결책은 NSUserDefaults registerDefaults:을 사용하는 것입니다. 대부분의 경우 기본값의 사전을 Root.plist의 내용으로로드합니다. 이 경우 synchronize으로 전화 할 필요가 없습니다. 기본값은 앱이 실행될 때마다 등록됩니다. 값은 실제로 저장되지 않습니다. NSUserDefaults에서 값을 요청하면 명시 적 값이 없으면 등록 된 기본값은 값을 찾습니다.

앱을 시작할 때 최대한 빨리 기본값을 등록해야합니다.

+0

감사합니다. 나는 여전히 혼란 스럽다. 애플이 적어도 앱이 Settings.bundle을 기본값으로 사용하는 옵션을 제공하지 않는 이유는 무엇인가? 이 작업을위한 표준 구현이 있습니까? 나는 한 쌍을 보았고 평등 해 보이지 않으므로 여기에 어떤 권고가 있나? – tschloss