macOS Swift:根据NSCOMBOX的输入更新NSTextfield
我正在练习Swift,边走边自学 到目前为止,我已经为我的工作构建了一个像样的记谱应用程序,帮助为我们工作的案例生成注释。我正在尝试实现一种功能,用户可以在NSComboBox中键入公司名称,然后,如果NSDictionary中存在相关的密钥匹配,则第二个文本字段将使用字典中的相关值进行更新 这是这样设计的,因为可能存在公司未保存的情况,因此文本将手动输入这些字段 我有代码的功能,只要用户从字典中输入一些东西。如果用户在“companyName”字段中输入了一些内容,整个过程就会崩溃,因为它会得到一个nil响应。我已经尝试了各种不同的方式的守卫标签或如果语句,我肯定只是做错了什么,所以我希望在如何使它不崩溃时,手动输入一些指导 (我通过Xcode UI builder控制这些元素中的大多数,这就是为什么ComboBox的项目没有在代码中列出的原因,仅供参考)macOS Swift:根据NSCOMBOX的输入更新NSTextfield,swift,macos,Swift,Macos,我正在练习Swift,边走边自学 到目前为止,我已经为我的工作构建了一个像样的记谱应用程序,帮助为我们工作的案例生成注释。我正在尝试实现一种功能,用户可以在NSComboBox中键入公司名称,然后,如果NSDictionary中存在相关的密钥匹配,则第二个文本字段将使用字典中的相关值进行更新 这是这样设计的,因为可能存在公司未保存的情况,因此文本将手动输入这些字段 我有代码的功能,只要用户从字典中输入一些东西。如果用户在“companyName”字段中输入了一些内容,整个过程就会崩溃,因为它会得
好吧,我已经玩了一点,我终于得到了它,以防将来有人试图追踪它 最终的代码是:
@IBOutlet weak var companyID: NSTextField!
@IBOutlet weak var companyName: NSComboBox!
var theCompanies: NSDictionary? = ["Company 1" : "1", "Company 2" : "2"]
var theID = ""
@IBAction func nameUpdated(_ sender: Any) {
let theID = theCompanies?.value(forKey: companyName.stringValue) as? String
self.companyID.stringValue = theID ?? ""
}
根据基里尔的建议,我拆除了原力展开装置,但无法使警卫声明生效。一时兴起,我为companyID.stringValue设置了默认值“”,这就成功了。可选的“展开”加上set命令的默认值将其正确连接起来。好吧,我又玩了一点,终于得到了它,以防将来有人试图追踪它 最终的代码是:
@IBOutlet weak var companyID: NSTextField!
@IBOutlet weak var companyName: NSComboBox!
var theCompanies: NSDictionary? = ["Company 1" : "1", "Company 2" : "2"]
var theID = ""
@IBAction func nameUpdated(_ sender: Any) {
let theID = theCompanies?.value(forKey: companyName.stringValue) as? String
self.companyID.stringValue = theID ?? ""
}
根据基里尔的建议,我拆除了原力展开装置,但无法使警卫声明生效。一时兴起,我为companyID.stringValue设置了默认值“”,这就成功了。可选的“展开”与set命令的默认值相结合,将其正确连接。“不能让guard语句声明变量”“不能让guard语句声明变量”