2012-01-07 3 views
1

내가 가지고 URL 값을 사용하여 AppDelegate에의 appDidFinishLoading 방법에서로드시 파일을 확인하는 인앱 NSUserDefaults 설정 루트 PLIST에 내가 가정 가기 : 약간의 정적과NSUserDefaults 설정 번들 PLIST

NSString *pathStr = [[NSBundle mainBundle] bundlePath]; 
NSString *settingsBundlePath = [pathStr stringByAppendingPathComponent:@"Settings.bundle"]; 
NSString *finalPath = [settingsBundlePath stringByAppendingPathComponent:@"Root.plist"]; 
NSDictionary *settingsDict = [NSDictionary dictionaryWithContentsOfFile:finalPath]; 
NSArray *prefSpecifierArray = [settingsDict objectForKey:@"PreferenceSpecifiers"]; 

NSDictionary *prefItem; 
for (prefItem in prefSpecifierArray){ 
    NSString *keyValueStr = [prefItem objectForKey:@"Key"]; 
    if ([keyValueStr isEqualToString:kFirstNameKey]){ 
     nsUserDefURL = [prefItem objectForKey:@"DefaultValue"]; 
    } 
     if ([keyValueStr isEqualToString:kSecondNameKey]){ 
     NSLog(@"You are using local data:%@",[prefItem objectForKey:@"DefaultValue"]); 
    } 
} 
NSLog(@" this is the url == %@", nsUserDefURL); 

// since no default values have been set (i.e. no preferences file created), create it here  
NSDictionary *appDefaults = [NSDictionary dictionaryWithObjectsAndKeys:nsUserDefURL,kFirstNameKey,@"YES",kSecondNameKey,nil]; 
[[NSUserDefaults standardUserDefaults] registerDefaults:appDefaults]; 
[[NSUserDefaults standardUserDefaults] synchronize]; 

:

NSString *kFirstNameKey = @"url"; 
NSString *kSecondNameKey = @"Web DataSource"; 

NSLog에 nsUserDefURL을 설정해도 설정 plist에 여전히 기본값이 표시됩니다. 나는 (시뮬레이터에서 그렇게 할 수 있는지 몰랐다.) 앱의 설정으로 갔고 url 필드의 값을 수정했지만 여전히 설정 루트의 기본 자리 표시 자 값인 test2.xml 값을 얻는다. plist. 여기

는 PLIST입니다 : Root.Plist

아니면 설정 번들 Xcode의 시뮬레이터에서 작동하지 않는다는 것입니다?

답변

0

내가이 라인 실종됐다 밝혀 :

nsUserDefURL = [[NSUserDefaults standardUserDefaults] stringForKey:kFirstNameKey]; 

을하지만 이것은 단지 기본값 각각의 출시를 읽습니다. 앱 설정에서 사용자 수정 값을 저장하지 않습니다. 그 값이 왜 저장되지 않습니까?

1

명시 적으로 저장해야합니다. 예를 들어 strFirstName이 사용자가 수정 한 값인 경우

NSUserDefaults* ud = [NSUserDefaults standardUserDefaults]; 
[ud setObject:strFirstName forKey:kFirstNameKey]; 
[ud sychronize]; 
으로 앱 설정에 저장합니다.