2012-11-18 6 views
2
와 동기화되지 번들은

가능한 중복 :
Multivalue type settings bundle fields alway return null설정 NSUserDefaults

나는 설정은 설정에서 다음과 같은 테이블을 생성 내 iOS 앱에 번들이 app

내 응용 프로그램에서 나는 NSUserDefaults를 사용하여 동일한 테이블을 생성하고 this

와 끝까지 시도

값을 검색하려면 코드가 간다은 다음과 같습니다

NSUserDefaults* userDefaults = [NSUserDefaults standardUserDefaults]; 
ds->use_cache = [userDefaults boolForKey:@"use_cache"]; 
ds->high_bitrate = [userDefaults boolForKey:@"high_bitrate"]; 

NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; 
[[cell detailTextLabel] setText:[defaults stringForKey:@"version"]]; 

키를 가진 stringForKey "버전은"항상 널 (null) 값을 반환합니다. 내 앱이 설정 번들에서 정의한 기본 매개 변수를 인식하도록 할 수없는 것 같습니다.

여기 내 설정 bundle

답변

3

설정의 기본 값은 registerDefaults: 방법을 사용하여 설정해야합니다. 그러면 NSRegistrationDomain을 사용할 수 있습니다. 이에 대한 예는 다음과 같습니다. 덕분에 이전 http://greghaygood.com/2009/03/09/updating-nsuserdefaults-from-settingsbundle에 언급했다 나의 첫 번째 대답과 함께 문제를 지적 & 마티아스 Bauch을 jrturton합니다.

NSDictionary *appDefaults = [ NSDictionary 
           dictionaryWithObject:@"default_version_value" forKey:@"version" ]; 

[ [ NSUserDefaults standardUserDefaults ] registerDefaults:appDefaults ]; 

NSUserDefaults *userDefaults = [ NSUserDefaults standardUserDefaults ]; 

또한 이러한 기본 값은 registerDefaults:에 대한 설명서에 명시된대로 응용 프로그램이 시작할 때마다 설정할 필요가 있습니다. 등록 도메인

컨텐츠 디스크에 기록되어있다; 응용 프로그램이 시작될 때마다이 메소드를 호출해야합니다. plist 파일을 응용 프로그램의 Resources 디렉토리에 넣고 해당 파일에서 읽은 내용으로 registerDefaults :를 호출 할 수 있습니다.

+0

길고 지루한 수동 버전의 'registerDefaults :'는 실제 답변이 아닙니까? – jrturton

+0

그 다음 심지어 더 나쁜 ['registerDefaults :'] (https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSUserDefaults_Class/Reference/Reference.html#//apple_ref/doc/ uid/20000318-CIHDDCDB). 실제로이 기본값을 유지하기 때문입니다. 앱의 다음 버전에서 기본값을 변경하려면 사용자가 기본값을 사용하도록 선택했는지 또는 사용자가 변경하지 않았기 때문에 기본값 만 사용 된 것인지 알 수 없습니다. 나는이 발견했습니다 –

+1

이 버그 ... http://ijure.org/wp/archives/179 을 나는 아이폰 OS가 기본적으로 NSUserDefaults에 기본값을로드하지 않는 믿을 수 없어를하지? – user293895