2012-12-27 45 views
0

我有一堆用戶默認值,我保存並加載到applicationWillTerminate/awakeFromNib上。見下文。爲NSTextField加載NSUserDefaults時出錯

對象是複選框(NSButton),滑塊(NSSlider)和一個文本字段(NSTextfield)。

我是在OS X上。在複選框和滑塊上沒有問題。

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

由於種種原因I'm得到一個SIBART爲什麼:(禁用此線時,沒有錯誤我不能弄清楚:

不幸的是與裝載的NSTextField當行我有一個問題。

我的應用程序拋出一個異常,但我不知道如何找出what's錯誤。

異常一路下跌的屏幕截圖。

感謝您的幫助。

鍵是定義像這樣:

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

回答

0

-stringForKey:將返回零,想必是默認是不實際設置或註冊。你可以告訴這是因爲斷言消息:「無效的參數不滿足aString!=零」

+0

mh,我試圖找出幾種可能性,以找出如何擺脫異常而沒有成功。其實我看不出有什麼不對。保存用戶默認值時,一切似乎都可以正常工作。我能做什麼? –

+0

您應該將該行分爲兩部分(「獲取值」和「設置字符串值」)。然後坐在第一個斷點上並檢查調試器中的值。 –