我有一堆用户默认值,我在applicationWillTerminate / awakeFromNib上保存并加载。见下文。
对象是复选框(NSButton),滑块(NSSlider)和一个文本字段(NSTextfield)。
我在OS X上。在Checkbox和Sliders上没有问题。
不幸的是,在使用NSTextfield加载行时遇到问题:
[txtRemark setStringValue :[myDefaults stringForKey:kTxtRemark]];
由于某些原因,我得到了一个SIBART,我无法找出原因:(禁用此行时没有错误。
我的应用程序抛出异常,但我不知道如何找出错误。
异常的截图。
感谢您的帮助。
键的定义如下:
保存 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]];
答案 0 :(得分:0)
-stringForKey:返回nil,大概是默认实际上没有设置或注册。你可以告诉这个因为断言消息:“无效参数不满足aString!= nil”