0

我有一堆用户默认值,我保存并加载到 applicationWillTerminate/awakeFromNib 上。见下文。

这些对象是复选框 (NSButton)、滑块 (NSSlider) 和一个文本字段 (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 回答