我試圖使用方法setString來改變文本字段中的文本,但它不起作用。然後我將其更改爲setStringValue,它工作。那麼setString用於什麼?setString與setStringValue在Cocoa
回答
NSTextField
沒有setString:
方法。 NSTextField
是一種NSControl
,NSControl
有一個setStringValue:
方法。
NSText
及其更着名的子類NSTextView
有一個setString:
方法。 @John Boker現場編輯器是NSText
是正確的,但即使在編輯模式下,您仍然無法將setString:
發送到NSTextField
。你需要從窗口中獲取字段編輯器,然後在那裏調用setString:
(不是你真的應該那樣做)。
雖然它讓新人感到困惑,但不同方法背後有一個很好的理由。 NSControl
有一個「值」,並且該值可以採用不同的類型(setDoubleValue:
,setObjectValue:
等)。這使我可以將該值設置爲double,但隨後以字符串形式檢索。對於廣泛的可能控制範圍,這很有意義且非常靈活。 NSText
不是控件;請注意它如何不具有setAction:
或setTarget:
。其目的是顯示和編輯(歸屬)字符串。當你打電話給string
時,你實際上得到了真正的支持文本存儲,而不僅僅是字符串形式的對象的值(stringValue
對NSControl
)。這就是說,當你說「它不工作」時,我希望你的意思是說你得到了一個編譯器警告,告訴你NSTextField
可能不會響應setString:
。如果你忽略了編譯器警告,那麼你在ObjC中會遇到很多問題。
進一步深入研究「價值」概念:許多NSControls(如滑塊)都有一個數值,並且'stringValue'對他們來說同樣有效。您可以要求控件的值爲double(doubleValue),float(floatValue),int(intValue),NSInteger(integerValue)或者NSString對象中的十進制文本表示('stringValue'),並使用匹配的setter方法將這些值設置爲任何類型。一個值,許多類型。與控件不同,文本視圖沒有這個;它只是有它的字符串。 – 2010-07-07 21:51:50
了setString:爲NSText,這是 用於NSText子類NSTextView 可以顯示和編輯用於一個的NSTextField的字段 編輯而被編輯它 類,和如文本編輯中的樣式文本 。
所以我採取的方式是你只能使用setString:當字段處於編輯模式,我想。
去多一點一般(相對於我的評論羅布的回答):
對象響應消息。您可以向任何響應該消息的對象發送消息;你不能發送消息給任何不響應的對象。
NSText及其子類NSTextView的實例響應setString:
,因此您可以發送NSText對象和NSTextView對象setString:
消息。
NSControl及其子類的實例(包括NSTextField)響應setStringValue:
,因此您可以發送NSControl對象,NSTextField對象和其他控件對象setStringValue:
消息。
請參閱Rob的回答和我對此的評論爲什麼這兩個類層次結構的特定分支具有這些看起來相似但命名不同的方法。
- 1. setStringValue和指針
- 2. ControlTextDidChange未在setStringValue上調用
- 3. setString NSMutableString
- 4. NSTextField將不會setStringValue
- 5. NSCell -stringValue調用-setStringValue?
- 6. CCLabelTTF SetString not updating
- 7. iOS didSelectRow和setString
- 8. NSInvalidArgumentException。 UIPasteboard setString
- 9. PreparedStatement在SetString中拋出NullPointerException
- 10. setStringValue使用AppleScript列表
- 11. MySQL的註冊器數據與setString數據,但沒有與getParameter
- 12. 使用反射的SetString
- 13. wxChoice :: SetString()索引錯誤
- 14. JProgressBar的setString不止一次
- 15. NSTextField setStringValue:將字符串附加到NSTextField
- 16. 協議與直接消息在Cocoa Touch
- 17. Cocoa - 搜索字段與Plist
- 18. cocoa與C++庫的綁定
- 19. cocoa在結構
- 20. 用了setString無法插入位類型
- 21. 如何正確使用setString過程?
- 22. 休眠多個參數setString生成Java
- 23. Java SQL不使用setString逃脫
- 24. Oracle JDBC中的setString()和setDate()的性能?
- 25. 標籤'setString'方法將其顛倒?
- 26. Objective-C的 - 的NSMutableString了setString VS的NSString
- 27. Alloc和init在Cocoa
- 28. 與NSArrayController等效的Cocoa Touch是什麼?
- 29. 將RTF文件與Cocoa合併
- 30. OS X GUI Cocoa程序與外殼
請不要將問題標記爲「xcode」(或「xcode3.2」或「xcode3.2.3」或類似的東西),除非它實際上與Xcode IDE有關。這個問題是關於可可。 – 2010-07-07 21:56:45