gpt4 book ai didi

ios - 将可选字符串解包为 Int 并使其成为非可选的

转载 作者:搜寻专家 更新时间:2023-11-01 06:15:37 24 4
gpt4 key购买 nike

自从我在 iOS 中编写代码以来已经有很长时间了,我正在将旧应用程序升级到 swift 3。我真的在为使用可选变量的一个问题而苦苦挣扎。

我有一个可选的文本字段。我希望将它展开为一个非可选的 Int,以便我可以在其他函数中使用它进行计算。

@IBOutlet weak var txtRuns: UITextField!

func sendScore()
{
let runs = txtRuns.text!
let overs = txtOvers.text!
let balls = txtBalls.text!
let wkts = txtWkts.text!
let target = txtTarget.text!
let totalOvers = txtTotalOvers.text!

let strData = "S|R\(runs)" + getOptionalScoreData(
runs: Int(runs),
wkts: Int(wkts),
overs: Int(overs),
balls: Int(balls),
target: Int(target),
totalOvers: Int(totalOvers)
)
}

func getOptionalScoreData(runs: Int, wkts: Int, overs: Int, balls: Int, target: Int, totalOvers: Int) -> String
{
if ( runs == 0 ) {
return getCurrentRunRate(runs: runs)
}

return "";
}

如您所见,我有很多函数要调用,我希望这个文本字段变成非可选的 INT。

现在我已经尝试了我在此处阅读的几个选项,但错误消息只是发生了变化。问题没有解决。

当前错误是

 The value of optional type 'Int?' not unwrapped; did you mean to use '!' or '?'?

请帮忙。谢谢

................................

请注意,我认为嵌套检查在这里不是一个好主意,因为所有这些变量都是相互独立的。一个可以为 nil,但其他仍然可以传递和使用。

如果我像这样嵌套检查,这意味着如果 runs 为 nil,则不会传递任何其他值。

if let runs = txtRuns.text, let runsInInt = Int(runs) {
if let overs = txtOvers.text, let oversInInt = Int(overs) {
if let wkts = txtWkts.text, let wktsInInt = Int(wkts) {

strData = "S|R\(runs)\(overs)\(wkts)" + getOptionalScoreData( runs: runsInInt, overs: oversInInt, wkts: wktsInInt)

}

最佳答案

如果您经常从 UITextField 获取值作为 Int,您可以添加如下扩展:

extension UITextField {
var intValue: Int {
get {
if let text = self.text {
return Int(text) ?? 0
}
return 0
}
set {
self.text = String(newValue)
}
}
}

您也可以在您的 View Controller 中将以上内容添加为私有(private)扩展。现在您可以将代码重写为:

func sendScore() {
let strData = "S|R\(txtRuns.intValue)\(overs.intValue)\(wkts.intValue)" + getOptionalScoreData(
runs: txtRuns.intValue,
wkts: wkts.intValue,
overs: overs.intValue,
balls: balls.intValue,
target: target.intValue,
totalOvers: totalOvers.intValue)
)
}

关于ios - 将可选字符串解包为 Int 并使其成为非可选的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45704532/

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