2011-04-27 1 views
1

에 대한의 DefaultValue : 당신은 내가 "방법 B"를 원하는 볼 수 있듯이나는 다음과 같은 설정을 가진 Settings.bundle을 정의 아이폰 애플 리케이션이 PSMultiValueSpecifier

<dict> 
     <key>DefaultValue</key> 
     <integer>2</integer> 
     <key>Key</key> 
     <string>calculationMethod</string> 
     <key>Title</key> 
     <string>CALCULATION_METHOD</string> 
     <key>Titles</key> 
     <array> 
      <string>Method A</string> 
      <string>Method B</string> 
      <string>Method C</string> 
      <string>Method D</string> 
      <string>Method E</string> 
      <string>Method F</string> 
      <string>Method G</string> 
     </array> 
     <key>Type</key> 
     <string>PSMultiValueSpecifier</string> 
     <key>Values</key> 
     <array> 
      <integer>3</integer> 
      <integer>2</integer> 
      <integer>5</integer> 
      <integer>4</integer> 
      <integer>1</integer> 
      <integer>6</integer> 
      <integer>0</integer> 
     </array> 
    </dict> 

내가 정의 기본적으로 선택하기를 DefaultValue를 설정합니다. 그러나이 방법은 목록에서 "방법 B"만 선택하지만 실제 값은 [설정 integerForKey : @ "calculationMethod"]는 0이며 "방법 G"에 해당합니다. 여기에서 뭔가를 잊어 버렸습니까? 아니면 DefaultValue가 전혀 작동하지 않습니까?

추신. 선택을 다른 것으로 변경 한 다음 "메소드 B"로 돌아 가면 올바른 값을 얻습니다.

답변

2

[settings integerForKey:@"calculationMethod"]의 의미가 명확하지 않습니다. settingsNSUserDefaults의 인스턴스 인 경우 실제로 예상되는 동작입니다. Settings.bundle의 기본값은 설정 앱에서 앱에 표시되는 내용 만 제어합니다. 앱이 실행되는 동안 NSUserDefaults에서로드하는 환경 설정에는 전혀 영향을 미치지 않습니다.

사용자 기본값으로 동일한 기본값을 얻으려면 사전에 키 (@"calculationMethod")와 기본값이 포함 된 두 번째 plist를 만들어야합니다. 앱이 시작되면 plist 파일을 열고 -[NSUserDefaults registerDefaults:]으로 전달합니다.

+0

답장을 보내 주셔서 감사합니다. 네, 맞습니다. settings는 NSUserDefaults의 인스턴스입니다. 당신의 대답은'DefaultValue'의 역할에 대한 나의 의심을 확인시켜 주지만 솔직히이 행동의 목적을 전혀 알지 못합니다. 여기에는 표시된 값을 한 위치에 설정하고 실제 값을 다른 위치에 설정했기 때문에 여기에는 모순 된 실제 함정이 있습니다. – pajevic

+0

나는 동의하는 경향이있다. Apple에 버그보고/개선 요청을 제출해야합니다. –

관련 문제