2012-07-25 2 views
0

iOS4에서 NSUserDefaults를 저장하면 정보가 저장됩니다. 그런 다음 응용 프로그램이 비활성 상태가되고 응용 프로그램을 종료하면 (홈 단추를 두 번 클릭하고 응용 프로그램을 종료하여) 응용 프로그램을 다시 시작하면 NSUserDefaults가 읽히지 않습니다.응용 프로그램 종료 사이에 NSUserDefaults 정보 유지

이제 NSUserDefaults의 기본 동작으로 문제가 발생하여 응용 프로그램이 종료되면 다음 실행시 정보가 저장되지 않습니까?

나는 정보를 유지하기 위해 사용하고 호출은 다음과 같습니다 -

[[NSUserDefaults standardUserDefaults] registerDefaults: 
    [NSDictionary dictionaryWithObjectsAndKeys: 
     "Some date", @"Validity", 
     nil]]; 
+0

[NSUserDefaults가 내 값을 저장하지 않는 이유는 무엇입니까?] (http://stackoverflow.com/questions/2622754/why-is-nsuserdefaults-not-saving-my-values) –

+0

SO가 정확히 일치합니다. 같은 n00b 질문. 나는 당신이 google 'NSUserDefaults를 저장하지 않는다'는 것을 믿지 않는다. ... 종결을위한 투표. –

답변

1

당신은 당신이 synchoronize 때까지 기본값이

[[NSUserDefaults standardUserDefaults] synchronize]; 

을 추가 등록 후 standardUserDefaults는만큼 올바른/현재 값을 제공합니다 앱이 살아있다.

일단 앱이 종료되면 standardUserDefaults를 동기화하지 않았기 때문에 앱은 다음 출시시 동기화되지 않은 값을 읽습니다.

예 : 편집중인 Google 문서를 생각해보십시오.

Google 문서의 자동 저장 기능은 nsuserdefaults synchornize와 같습니다. 문서의 변경 사항을 자동 저장 한 후에 브라우저를 닫으면 다음 번에 문서를로드 할 때 이전 내용이 표시됩니다.

1

사용자 기본값을 유지하기 위해 언급 한 호출 registerDefaults은 실제로 디스크에 아무 것도 저장하지 않습니다. registerDefaults이 수행하는 작업은 디스크에서 아무 것도 찾을 수없는 경우 응용 프로그램에 사용할 기본값을 초기화합니다. 각 응용 프로그램 시작시 일반적으로 응용 프로그램 대리인의 initialize 메서드에서이 작업을 수행해야합니다.

응용 프로그램이 실행되면 일반적으로 사용자 기본값이 수정됩니다. 당신이 디스크에 이러한 수정 된 기본 설정을 저장할 때마다 호출해야합니다

[[NSUserDefaults standardUserDefaults] synchronize]; 

을 기본값은 그들이 후속 애플리케이션 출시에 자동으로로드됩니다 저장 한 후.