1

我必須丟失一些非常明顯的東西,但我已經找遍了,找不到解決方案。NSNumberFormatter失敗,無值

在界面生成器中,我將NSNumberFormatter連接到NSTextField,我將該值綁定到float值。這一切都按預期工作,數字得到驗證和更新。除非我輸入一個空字符串,在這種情況下,我得到一個異常:

Exception detected while handling key input. 
[<ResolutionSetting 0x11d029430> setNilValueForKey]: could not set nil as the value for the key scale. 

有什麼辦法有,而不是零的的NSTextField返回一個空字符串(@「」)如果文本字段爲空?或者,有沒有辦法讓NSNumberFormatter處理零值?

回答

1

setNilValueForKey:方法的默認行爲是引發異常。您需要在代碼中實現此方法以覆蓋默認行爲。例如,當沒有輸入任何內容時分配一個0.0值。 例子:

- (void)setNilValueForKey:(NSString *)key{ 
//here you can either assign @"" or 0.0 
} 

您還可以在數字格式化屬性檢查器中指定的最小值和最大值。

蘋果文檔中的「鍵值編碼編程指南」以及「Cocoa programming for Mac OS X」的第7章中介紹了此主題。

+1

感謝您的回答。我已經嘗試了這種方法,雖然它刪除了異常,但它將文本字段留空。 (相反,它不應允許零值,並彈出通知,要求用戶輸入有效的號碼。) – Vik 2012-04-25 07:22:48

0

將您的NSNumberFormatternilSymbol設置爲非空字符串。

NSTextField然後不會再拋出異常,但向用戶抱怨""是無效的值。我不確定這是爲什麼可行,但這是我找到的最簡單的解決方案。

yourNumberFormatter.nilSymbol = "?"