2013-10-09 2 views
0

내 iPhone 응용 프로그램에서 removeObjectForKey:@"bla" 또는 setObject:nil forKey:@"bla"[NSUserDefaults standardUserDefaults]에 사용하여 키를 삭제합니다.NSUserDefaults를 동기화해도 아무 효과가 없습니다

그러나 새 컨트롤러를 탐색 컨트롤러 스택에 밀어 넣기 직전에 기본값을 업데이트하지 않습니다.

푸시 된 컨트롤러의 viewDidAppear에서 수행하면 synchronize 호출이 예상 한대로 작동합니다.

이 동작을 이해하지 못합니다. 누구도 비슷한 문제가 있었습니까?

요약 : 삭제 + 새 VC를 푸시하기 전에 동기화 : NSUserDefaults는 동일하게 유지됩니다. 삭제 + 동기화 viewDidAppear 및 작동합니다.

나는 또한 setPersistentDomain:forName:를 사용했지만, 결과는 동일 ..

편집 : 여기에 코드입니다 :

+ (void)deleteDefaultEntries 
{ 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 

    [defaults removeObjectForKey:@"key1"]; 
    [defaults removeObjectForKey:@"key2"]; 
    [defaults removeObjectForKey:@"key3"]; 
    [defaults removeObjectForKey:@"key4"]; 

    [defaults synchronize]; 
} 
+0

정말로 고정 된 문자열 또는 ViewController에 연결된 일부 변수를 저장하려고합니까? –

+0

NSUserDefaults에있는 키를 삭제하려고합니다. 그냥 문자열. 정확히 4. – scrrr

+0

코드를 추가하십시오 –

답변

0

귀하의 코드를 잘 본다, 나는 그것이 아이폰 OS의 버그가 아닙니다 확신하지만, 이 시도 : 또한 this question

[[NSUserDefaults standardUserDefaults] setObject:nil forKey:@"example key"]

을 확인하십시오.

관련 문제