gpt4 book ai didi

swift - 将文本字段值分配给 Swift 中的变量

转载 作者:可可西里 更新时间:2023-11-01 01:37:26 25 4
gpt4 key购买 nike

我正在尝试学习 Swift,结果发现它与其他语言的差异超出了我的预期...

我只想将用户输入的值作为整数存储在变量中。

我的尝试导致以下错误:“ fatal error :在展开可选值时意外发现 nil”

我已经尝试了多种方法,但似乎无法提出解决方案,我知道必须有一种简单的方法来做到这一点。

var intNumber: Int = 0
@IBOutlet weak var txt_Number: UITextField!

for view in self.view.subviews as [UIView]{
if let txt = view as? UITextField
{
if let txtData = txt.text where txtData.isEmpty
{
// Error Message
}
else
{
intNumber = Int(txt_Number.text)
}
}
}

我知道上面的代码不正确,但我认为这是最接近正确的代码。就展开而言,我似乎遗漏了一些东西。我了解解包的原理,但我尝试过的任何东西都无法编译,或者如果它确实编译,那么它会在代码启动时失败并出现上述错误(按下按钮时启动代码)。

在此先感谢您的帮助!

最佳答案

几个想法:

  1. 确保您的 socket 连接到 txt_Number。如果 (a) 它是您在 IB 中连接的导出,则不需要所有代码检查以确保它不是 nil; (b) 在 View 完全加载(即调用 viewDidLoad)之前,您没有执行上述代码。

    如果 socket 没有连接,您会在左边看到一个空点:

    enter image description here

    如果连接正确,您会在左边距看到一个实心圆点:

    enter image description here

  2. 如果一切都正确连接,您可以这样做:

    guard let txtData = txt_Number.text, let value = Int(txtData) else {
    // report error and then `return`
    return
    }

    intNumber = value
  3. 如果你想花哨点,你可能想确保用户只输入数值

    • viewDidLoad 中,指定键盘仅用于十进制数字。

      txt_Number.keyboardType = .NumberPad

      或者您也可以在 IB 中指定它。

    • 为文本字段指定一个代表,只允许他们输入数值。 (根据前面的观点,这似乎是多余的,但事实并非如此,因为您还必须预料到它们会将字符串粘贴到文本字段中。)

    参见 https://stackoverflow.com/a/26940387/1271826 .

关于swift - 将文本字段值分配给 Swift 中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35219681/

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