gpt4 book ai didi

swift - 更改时更新 Swift NSTextfield 变量

转载 作者:行者123 更新时间:2023-11-28 15:36:14 24 4
gpt4 key购买 nike

我如何编写它以便在用户完成使用该字段时更新变量(对于 Cocoa?)。目的是允许用户为电视在网络上的位置指定自定义 IP 地址。

import Cocoa
import Alamofire

class ViewController: NSViewController, NSTextFieldDelegate {

@IBAction func MenuButton(_ sender: NSButtonCell) {
triggerRemoteControl(irccc: "AAAAAQAAAAEAAABgAw==")
}
@IBAction func ReturnButton(_ sender: NSButton) {
triggerRemoteControl(irccc: "AAAAAgAAAJcAAAAjAw==")
}

@IBOutlet var IPField: NSTextField!  // [A] Set by the user

func triggerRemoteControl(irccc: String) {
Alamofire.request(IPField, // [B] Goes here when it's updated.
method: .post,
parameters: ["parameter" : "value"],
encoding: SOAPEncoding(service: "urn:schemas-sony-com:service:IRCC:1",
action: "X_SendIRCC", IRCCC: irccc)).responseString { response in
print(response)
}
}


}

—更新

我尝试声明一个变量:

var IPString: String

然后(我将 textField 的委托(delegate)设置为 ViewController,并将此函数放在里面):

override func controlTextDidEndEditing(_ obj: Notification){
let IPString = IPField.stringValue
}

即使使用“-> String”和返回符号,它仍然会提示未使用的变量。我显然不太了解我的语法。

Complier 还提示 ViewController 没有被初始化。

最佳答案

您需要覆盖 func controlTextDidEndEditing(_ obj: Notification)功能

你应该看看:

  • object (obj 的属性)- 有时您想知道哪个对象向您发送了结束编辑操作。

  • userInfo (obj 的属性)- 包含一个 "NSTextMovement"键,它允许您定义用户如何结束编辑。

override func controlTextDidEndEditing(_ obj: Notification){
让 IPString = IPField.stringValue

在这里,您正在创建新常量。你想要的是将这个值设置到你的类变量中,所以你应该制作 IPString = IPField.stringValue

但这不是很正确,因为 func controlTextDidEndEditing(_ obj: Notification) 可以从其他对象调用,所以首先你应该检查 obj 通知是否包含对象 which例如,与守卫一起发送。

guard let object = obj.object else {
返回
}

然后检查对象是否是带有身份运算符的 IPField

守卫对象 === IPField else {
返回
}

最后,您可以将您的字段值分配给您的 IPString var

IPString = object.stringValue

希望对您有所帮助。哦,还有我这边的一个建议,你应该为你的变量使用小驼峰命名约定。

关于swift - 更改时更新 Swift NSTextfield 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44236550/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com