如何在Swift中将字符串转换为Int?

如何在Swift中将字符串转换为Int?,swift,string,text,int,Swift,String,Text,Int,这个问题的标题相同,但情况不同。 在这种情况下,这是非常简单的,但我不能在网上找到相同的问题。 这是代码 class ViewController: UIViewController { @IBOutlet weak var fldTotalUnits: UITextField! var intTotalUnits:Int? = Int(fldTotalUnits) 此处的错误表示“无法在属性初始值设定项中使用实例成员'fldTotalUnits;…” 我试着用let替换var,试过NSS

这个问题的标题相同,但情况不同。 在这种情况下,这是非常简单的,但我不能在网上找到相同的问题。 这是代码

class ViewController: UIViewController {

@IBOutlet weak var fldTotalUnits: UITextField!

var intTotalUnits:Int? = Int(fldTotalUnits)
此处的错误表示“无法在属性初始值设定项中使用实例成员'fldTotalUnits;…”
我试着用let替换var,试过NSString,试过.toInt(),但没有成功。。。那么我该怎么做呢?

您问题中的代码试图从
UITextField
而不是
字符串创建
Int
。你应该说的是

var intTotalUnits:Int?


func updateTotalUnits()
    guard let text = fldTotalUnits.text else { return }

    intTotalUnits = Int(text)    
}

String
Int
的转换并不复杂。你只是在错误的地方进行转换。您试图在初始化另一个成员时引用一个成员,这是不允许的。在这种特殊情况下,仅仅是因为当您试图通过
Int(fldTotalUnits)
使用它时,
fldTotalUnits
具有值
nil
。创建类的实例时,
ViewController
fldTotalUnits
被设置为
nil
,并在以后使用有用的值初始化。因此,您首先要做的是将该行移动到一个单独的方法中:

func doSomething() {
    var intTotalUnits:Int? = Int(fldTotalUnits)
}
现在,您将看到编译器抱怨没有合适的初始值设定项,因为您必须访问
fldTotalUnits
text
属性,而不是使用实际的text字段:

func doSomething() {
    var intTotalUnits:Int? = Int(fldTotalUnits.text!)
}

现在您可以考虑将
intTotalUnits
的声明移动到其他地方,但必须通过某种方法设置其值。

1。将
Int
创建代码放入一些
func
2。改为使用textfield的
text
属性。该错误有可能重复。但是如果OP用您的代码替换他的语句,它仍然无法编译,他必须另外将其放在单独的函数中。好吧,我希望OP不要只是复制我的代码而不考虑它!它说一条线上的连续delcaration必须用“;”分隔(分号)还有另一个错误,上面写着“预期声明”哦,我想他是这样做的!显然OP不知道把代码放在哪里。编译器消息并不抱怨
文本
,因为它首先关心的是代码段的实际位置。事实上,您是对的!我必须将转换放在一个函数中,然后添加它。text!哦,我的天哪!你刚刚解决了让我痛苦了好几个小时的问题。。我爱你,谢谢你活着
var intTotalUnits:Int{return Int(fldTotalUnits.text!)??0}
@LeoDabus是的,当然。对于以某种方式获得否决票并被删除的问题,已经有了一个答案——我想解释一下这里出了什么问题,因为OP一开始就被搞糊涂了。如果我可以问的话,那些在函数中声明的变量是否可以在整个程序中访问?在函数中声明的变量只能在函数中访问