加载NSTextField的NSUserDefaults时出错

时间:2012-12-27 21:15:16

标签: objective-c exception nsuserdefaults nstextfield

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

对象是复选框(NSButton),滑块(NSSlider)和一个文本字段(NSTextfield)。

我在OS X上。在Checkbox和Sliders上没有问题。

不幸的是,在使用NSTextfield加载行时遇到问题:

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

由于某些原因,我得到了一个SIBART,我无法找出原因:(禁用此行时没有错误。

我的应用程序抛出异常,但我不知道如何找出错误。

异常的截图。

感谢您的帮助。

键的定义如下:

enter image description here

保存 myDefaults applicationWillTerminate 就像这样

  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];

加载 myDefaults awakeFromNib 就像这样

   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]];

enter image description here

1 个答案:

答案 0 :(得分:0)

-stringForKey:返回nil,大概是默认实际上没有设置或注册。你可以告诉这个因为断言消息:“无效参数不满足aString!= nil”