0
我有以下方法設置爲NSComboBox
和兩個NSTextField
S的動作:以統一的方式從NSTextField,NSComboBox獲取值?
- (IBAction)valueChanged:(id)sender
{
if (sender == comboBox) {
[myModel setFoo1:[comboBox intValue]];
} else if (sender == intTextField) {
[myModel setFoo2:[intTextField intValue]];
} else if (sender == floatTextField) {
[myModel setFoo3:[floatTextField floatValue]];
}
}
我想,如果我能有這樣的方法,弄成這個樣子,爲了提高可維護性:
- (IBAction)valueChanged:(id)sender
{
[myModel setValue:[sender value] forKey:[sender identifier]];
}
不幸的是,它不能這樣工作。我得到以下錯誤:
[NSComboBox value]: unrecognized selector sent to instance 0x7fed42029430
我如何從控件的值用統一的方式(即作爲一個對象),無論int
或float
?在我的模型上使用的KVC setValue:forKey:
方法應該能夠推導出值對象的實際類型(即在這種情況下爲NSNumber
的類型)就好了,對吧?
或者這是不可能的? (我知道我大概可以使用綁定綁定到該模型的值字段的用戶界面控件,但是這不是我想做的事情。)
你嘗試過使用' - (id)objectValue'嗎? – sbooth
不,我沒有。這似乎是訣竅。非常感謝!你介意讓你的評論成爲答案,以便我能接受它嗎? – tajmahal
我繼續前進,並將其作爲答案。 – sbooth