Ios 当变量类型为Int并且没有';t swift 3中的零值
我正在尝试将Ios 当变量类型为Int并且没有';t swift 3中的零值,ios,swift3,Ios,Swift3,我正在尝试将字符串转换为Int。首先, let ageString: String = "27" let ageInt:Int = Int(ageString)! 系统要求使用感叹号(!)标记展开 但在下面的方式中 let ageString: String = "27" let ageInt = Int(ageString) 没关系。为什么是比 您尝试使用的Int将返回可选的Int?值 因此,通过let ageInt:Int的第一次声明,您明确指定ageInt到Int的类型,Int(age
字符串
转换为Int
。首先,
let ageString: String = "27"
let ageInt:Int = Int(ageString)!
系统要求使用感叹号(!)标记展开
但在下面的方式中
let ageString: String = "27"
let ageInt = Int(ageString)
没关系。为什么是比 您尝试使用的Int
将返回可选的Int?
值
因此,通过let ageInt:Int
的第一次声明,您明确指定ageInt
到Int
的类型,Int(ageString)
的结果是Int?
,这样编译器就告诉您通过添加来打开可选项代码>在末尾
现在使用的第二次声明让ageInt
您还没有指定结果的类型,因此其可选的Int?
类型和编译器不会提示您添加代码>
现在,如果ageString
不是下面的有效整数,第一个声明将崩溃
let ageString: String = "27.5" //Float or some string "hello"
let ageInt:Int = Int(ageString)! // This line give you unexpectedly found nil crash
如果ageString
不是有效整数,则第二次声明将不会发生这种情况
您尝试使用的Int
将返回可选的Int?
值
因此,通过let ageInt:Int
的第一次声明,您明确指定ageInt
到Int
的类型,Int(ageString)
的结果是Int?
,这样编译器就告诉您通过添加来打开可选项代码>在末尾
现在使用的第二次声明让ageInt
您还没有指定结果的类型,因此其可选的Int?
类型和编译器不会提示您添加代码>
现在,如果ageString
不是下面的有效整数,第一个声明将崩溃
let ageString: String = "27.5" //Float or some string "hello"
let ageInt:Int = Int(ageString)! // This line give you unexpectedly found nil crash
如果ageString
不是有效整数,则第二次声明将不会发生这种情况
因为编译器不知道Int(ageString)
将生成实际的Int
值。在您的情况下,ageString
是27
,但是如果ageString
是adsfds
,该怎么办
因此,在这种情况下,输出将是Nil
,因此通过强制代码>展开您是说输出将是Int
,因为编译器不知道Int(ageString)
将产生实际的Int
值。在您的情况下,ageString
是27
,但是如果ageString
是adsfds
,该怎么办
因此,在这种情况下,输出将是Nil
,因此通过强制代码>展开您是说输出将是Int
在第一个输出中,您告诉ageInt具有Int类型。因此它不能具有零值。
在第二个例子中,你没有告诉它应该是什么类型的。所以它会变为Int?类型并可以获取nil值。看看这个:
let ageInt:Int = Int(ageString)!
let ageOptionalInt = Int(ageString)
let ageOptionalInt2: Int? = Int(ageString)
在第一个示例中,您告诉ageInt具有Int类型。因此它不能具有零值。
在第二个例子中,你没有告诉它应该是什么类型的。所以它会变为Int?类型并可以获取nil值。看看这个:
let ageInt:Int = Int(ageString)!
let ageOptionalInt = Int(ageString)
let ageOptionalInt2: Int? = Int(ageString)
使用此扩展名将字符串转换为Int
extension String {
var toInt:Int?{
get{
return Int(self)
}
}
}
let a = "55".toInt
使用此扩展名将字符串转换为Int
extension String {
var toInt:Int?{
get{
return Int(self)
}
}
}
let a = "55".toInt