2011-04-12 7 views
5

기본 설정 값 인 텍스트 필드를 사용하여 설정 번들을 만들었습니다.설정 번들 - 기본값 동작?

내 응용 프로그램이 시작되고 값을 검색 할 때 null입니다. 사용자가 값을 제공하기 전에 값을 수동으로 코딩해야합니까?

또한 사용자가 환경 설정 화면으로 이동하여 텍스트 필드를 입력 한 다음 값을 변경하지 않고 그대로두면 값이 설정되지 않습니다 ... 사용자가 실제로 값을 변경해야 저장됩니다. 옳은?

답변

4

아니, 그렇게하지 않습니다.

이하는 기능이있다 :

id userDefaults = [NSUserDefaults standardUserDefaults]; 
[userDefaults registerDefaults: defaultSettings]; 

당신은 당신의 설정에서 plist 파일을 PreferenceSpecifiers의 모든 하위 키를 반복하여 매개 변수를 구축 할 수 있습니다. 이 같은

뭔가 :

- (NSDictionary *)readDefaultSettingsFromPlist: (NSString *)inPath; 
{ 
    id mutable = [NSMutableDictionary dictionary]; 
    id settings = [NSDictionary dictionaryWithContentsOfFile: inPath]; 
    id specifiers = [settings objectForKey: @"PreferenceSpecifiers"]; 
    for (id prefItem in specifiers) { 
     id key = [prefItem objectForKey: @"Key"]; 
     id value = [prefItem objectForKey: @"DefaultValue"]; 
     if (key && value) { 
      [mutable setObject: value 
         forKey: key]; 
     } 
    } 
    return [NSDictionary dictionaryWithDictionary: mutable]; 
} 
+0

havent 한 그것을 시도하지만,이 certinly는 하드 코드 기본값보다 더 적절한 : – Nippysaurus

+0

그래, 내가 여기에 코드를 보장 할 수 없습니다 보인다. 나는 그것을 작성하고 그것을 전에 사용했습니다. 이 코드를 다른 프로젝트 (여기서는 내 검색)에 통합 할 예정입니다. 그래서 문제가 있다면 그것을 업데이트하겠습니다. –

+0

잘 처리했습니다. :) –

1

키에 null이 있으면 앱을 체크인 할 수 있습니다. 자신의 기본값을 사용할 수 있습니다.

1

Settings App에 기본값이 표시되지만 NSUserDefaults standardUserDefaults에 자동으로 저장되지는 ​​않습니다. 따라서 nil 값을 발견하면 명시 적으로 기본값을 설정해야합니다. 이 같은

뭔가 :

+ (NSString *)userDefaultStringForKey:(NSString *)key defaultValue:(NSString *)def { 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    NSString *val = [defaults stringForKey:key]; 
    if (val == nil && def != nil) { 
     val = def; 
     [defaults setObject:val forKey:key]; 
    } 
    return val; 
}