0

applicationWillTerminate/awakeFromNibに保存してロードするユーザーデフォルトがたくさんあります。下記参照。

オブジェクトは、チェックボックス (NSButton)、スライダー (NSSlider)、および 1 つのテキストフィールド (NSTextfield) です。

私は OS X を使用しています。チェックボックスとスライダーには問題はありません。

残念ながら、NSTextfield を含む行をロードするときに問題が発生しました。

[txtRemark setStringValue :[myDefaults stringForKey:kTxtRemark]];

何らかの理由で SIBART を取得していますが、その理由がわかりません :( この行を無効にしてもエラーは発生しません。

私のアプリは例外をスローしますが、何が問題なのかを理解する方法がわかりません。

例外のスクリーンショット。

手伝ってくれてありがとう。

キーは次のように定義されています。

ここに画像の説明を入力

このようにapplicationWillTerminateにmyDefaultsを保存します

  NSUserDefaults *myDefaults = [NSUserDefaults standardUserDefaults];
  [myDefaults setObject :[isAppointment state]         forKey:kIsAppointment];
  [myDefaults setObject :[boxForEver    state]         forKey:kBoxForEver];
  [myDefaults setObject :[boxMakeSound  state]         forKey:kBoxMakeSound];
  [myDefaults setObject :[tickTackFlag  state]         forKey:kTickTackFlag];
  [myDefaults setObject :[slideHour     intValue]      forKey:kSlideHour];
  [myDefaults setObject :[slideMin      intValue]      forKey:kSlideMin];
  [myDefaults setObject :[slideSec      intValue]      forKey:kSlideSec];
  [myDefaults setObject :[startAuto     state]         forKey:kStartAuto];
  [myDefaults setObject :[txtRemark     stringValue]   forKey:kTxtRemark];
  [myDefaults setObject :[volumeAdjust  intValue]      forKey:kVolumeAdjust];

このようにawakeFromNibにmyDefaultsをロードします

   NSUserDefaults *myDefaults = [NSUserDefaults standardUserDefaults];
   [isAppointment setState       :[myDefaults stringForKey:kIsAppointment]];
   [boxForEver    setState       :[myDefaults stringForKey:kBoxForEver]];
   [boxMakeSound  setState       :[myDefaults stringForKey:kBoxMakeSound]];
   [tickTackFlag  setState       :[myDefaults stringForKey:kTickTackFlag]];
   [slideHour     setIntValue    :[myDefaults stringForKey:kSlideHour]];
   [slideMin      setIntValue    :[myDefaults stringForKey:kSlideMin]];
   [slideSec      setIntValue    :[myDefaults stringForKey:kSlideSec]];
   [startAuto     setState       :[myDefaults stringForKey:kStartAuto]];
   [txtRemark     setStringValue :[myDefaults stringForKey:kTxtRemark]];
   [volumeAdjust  setIntValue    :[myDefaults stringForKey:kVolumeAdjust]];

ここに画像の説明を入力

4

1 に答える 1

0

-stringForKey: は nil を返しています。おそらく、デフォルトは実際には設定または登録されていません。これは、「無効なパラメーターが aString を満たさない!= nil」というアサーション メッセージでわかります。

于 2012-12-27T22:25:08.817 に答える