2013-09-16 5 views
0

나는 앱을 시작할 때 이미 모든 키 - 값 쌍을 삭제하려고했는데 키를 확인하면 NSUserDefault에이 키가 저장됩니다. 이 기본 설정을 저장했습니다.nsuserdefault에는 키 - 값을 삭제하는 방법이 설정되어 있습니까?

NSArray *keys = [[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] allKeys]; 
NSLog(@"all keys %@", keys); 


keys (
    NSLanguages, 
    AppleITunesStoreItemKinds, 
    AppleLocale, 
    AppleLanguages, 
    NSInterfaceStyle 
) 

NSUserDefaults에 새로운 동적 값을 저장할 때 이러한 기본 설정을 제외한 모든 키를 선택하고 싶습니다.

이 문제를 도와주세요.

미리 감사드립니다.

+1

왜 당신이 속하지 않는 환경 설정을 삭제 하시겠습니까? – Tricertops

+0

값이 NSUserDefaults에 삽입되었는지 확인하고 싶습니다. 이러한 기본 설정을 삭제하지 않고 어떻게 할 수 있습니까? 제발 제안 해주세요. – user2677941

+1

오브젝트를 테스트하면 사전은 설정되지 않은 경우 nil을 리턴합니다. –

답변

2

당신이하려는 일을하지 마십시오. Apple에서 추가 한 키를 조작하지 마십시오. 자신 만의 키 세트 (이름에 접두어가있는 것이 좋음)를 유지하고 해당 키만을 편집하십시오.

일반적으로 앱에 특정 요구 사항이 없으면 키를 삭제해서는 안됩니다. 당신이해야 할 앱이 시작될 때 당신의 각 키에 대한 기본 값을 설정하는 것입니다

[[NSUserDefaults standardUserDefaults] registerDefaults:@{... : ...}]; 

이러한 기본값은 응용 프로그램이 실행되는 동안 유효하지만 저장되지 않습니다. set...:forKey: 메서드 중 하나를 사용하여 설정 한 값이 synchronize 인 경우 기본값을 덮어 쓰고 저장됩니다.

+0

동적 인 키 - 값 쌍을 저장하고 키를 모른다. 환경 설정을 제외한 모든 키 - 값 쌍을 검색하려면 어떻게해야합니까? – user2677941

+0

키를 알 수없는 방법은 무엇입니까? 단일 키를 사용하여 해당 사전에 미스터리 항목이 들어있는 사전을 저장하십시오. – Wain

+0

prefrences를 제외한 모든 키를 선택할 수 있습니까? – user2677941

0

앱과 연결된 NSUserDefaults의 모든 항목을 호출하여 제거 할 수 있습니다.

// remove entire user defaults 
NSString *appDomain = [[NSBundle mainBundle] bundleIdentifier]; 
[[NSUserDefaults standardUserDefaults] removePersistentDomainForName:appDomain]; 
[[NSUserDefaults standardUserDefaults] synchronize]; // not sure if needed, but never hurts 

이렇게하면 정보를 사용자 기본값으로 저장할 수 있습니다.

1

- (NSDictionary *) dictionaryRepresentation을보십시오. 표준 사용자 기본값에서이 방법을 사용하면 사용자 기본값의 모든 키 목록을 가져올 수 있습니다. 그런 다음 사용자 기본 설정을 취소하려면이 옵션을 사용할 수 있습니다

NSUserDefaults * defs = [NSUserDefaults standardUserDefaults]; 
    NSDictionary * dict = [defs dictionaryRepresentation]; 
    for (id key in dict) { 
     [defs removeObjectForKey:key]; 
    } 
    [defs synchronize]; 

removeObjectForKey을 - 당신에게 특혜를 제거 할 수있는 기능을 제공해야한다고.

+0

나는 이것을 이미 시도했지만, 단지 환경 ​​설정이 아닌 키를 삭제한다. 새로 추가 된 항목 만 키 - 값 쌍이 있습니다. 어떻게해야합니까? – user2677941

+0

이 중 하나를 시도해 보셨습니까 [NSUserDefaults resetStandardUserDefaults]; – Ravindhiran

+0

어떤 오류가 발생했는지 설명해 주시겠습니까? 키 ( NSLanguages, AppleITunesStoreItemKinds, AppleLocale, AppleLanguages, NSInterfaceStyle ) : 내가 거기 NSUserDefault에 저장된 모든 키 여전히 존재를 확인할 때 – Ravindhiran

관련 문제