如何在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一开始就被搞糊涂了。如果我可以问的话,那些在函数中声明的变量是否可以在整个程序中访问?在函数中声明的变量只能在函数中访问