如何获取NSTextField的文本变量?调用text属性报错无此成员
解决NSTextField报错“Value of type 'NSTextField' has no member 'text'”的问题
哦,这个坑我刚转macOS开发的时候也踩过!原因其实很直白:macOS的NSTextField和iOS的UITextField在文本属性命名上不一样——iOS里我们习惯用.text获取文本,但macOS的NSTextField对应的属性是stringValue。
快速修复方案
直接把代码里的.text替换成.stringValue就搞定了:
错误写法(触发报错)
let userInput = myTextField.text // 这里会弹出你遇到的错误提示
正确写法
let userInput = myTextField.stringValue // 顺利获取文本内容
要是需要设置NSTextField的文本,同样用stringValue:
myTextField.stringValue = "Hello macOS开发!"
额外小补充
如果你的NSTextField里是带格式的富文本(比如不同颜色、字体),可以用attributedStringValue属性来操作:
// 获取富文本 let richContent = myTextField.attributedStringValue // 设置富文本 let styledText = NSAttributedString(string: "红色高亮文本", attributes: [.foregroundColor: NSColor.red]) myTextField.attributedStringValue = styledText
本质上是因为NSTextField属于NSControl家族,这个家族的控件大多用stringValue来处理文本内容,和iOS UIKit的设计习惯有差异,记下来以后就不会再踩这个小坑啦!
内容的提问来源于stack exchange,提问作者user9222646
相关产品推荐
相关产品推荐

