gpt4 book ai didi

ios - 由字符串分隔的组件崩溃应用程序 swift

转载 作者:搜寻专家 更新时间:2023-10-31 22:33:08 24 4
gpt4 key购买 nike

我有一个应用程序,它通过使用 componentSeparatedByString(",") 将 textField 输入转换为 Int 数组,但是当我在文本字段中输入多个逗号时,应用程序崩溃了,我一直在尝试在线寻找解决方案,但没有成功,我怎样才能解决这个问题?我可以通过检查 characters.first == ","||characters.last == ","但不是连续的逗号来防止它崩溃。

            enterValueLabel.text = ""

let circuits = circuitNumbersTextField.text!.componentsSeparatedByString(",")

let circuitNumbers = circuits.map { Int($0)!}

CircuitColors(circuitNumber: circuitNumbers, phaseColors: circuitPhaseColors )


if /*circuitNumbersTextField.text!.characters.first != "," || */circuitNumbersTextField.text!.characters.last != "," || (circuitNumbersTextField.text!.characters.first != "," && circuitNumbersTextField.text!.characters.last != ",")

最佳答案

为了使您的代码正常工作,我将执行以下操作。这里重要的是总体思路,而不是我正在使用的具体示例(尽管它应该适合您)。

首先,让我们安全地展开文本标签:

if let text = circuitNumbersTextField.text {

}

现在我们避免使用 circuitNumbersTextField.text! 我们知道错误不会来自那里。

然后我们把句子分成几个部分:

if let text = circuitNumbersTextField.text {
let circuits = text.componentsSeparatedByString(",")

}

我们使用 flatMap 来安全地解包 Int() 返回的 Optionals:

if let text = circuitNumbersTextField.text {
let circuits = text.componentsSeparatedByString(",")
let circuitNumbers = circuits.flatMap { Int($0) }
// circuitNumbers will only contain the successfully unwrapped values
}

您的代码片段:

if let text = circuitNumbersTextField.text {
let circuits = text.componentsSeparatedByString(",")
let circuitNumbers = circuits.flatMap { Int($0) }
if (circuits.first != "," && circuits.last != ",") || circuits.first != "," || circuits.last != "," {
// condition is met
} else {
// condition is not met
}
}

您现在可以在此代码块中安全地使用 circuitNumbers 而不会崩溃。

关于ios - 由字符串分隔的组件崩溃应用程序 swift ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35434570/

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