类型转换需要解包吗?

时间:2018-09-03 07:41:58

标签: swift type-conversion optional

var a: String = "1"
var b: Int = Int(a) 

上面的示例触发一个错误,提示Int需要解包。

var a: String = "1"
var b = Int(a)

但是,如果我们在声明b时取消该类型并执行相同的操作,则不会触发任何错误。

两种方法有什么区别?为什么第一个即使没有声明为可选,也需要拆开?

1 个答案:

答案 0 :(得分:3)

这是因为在第一个示例中您说b的类型为Int,而在第二个示例中,因为您没有使类型显式编译器将其设置为Int?

这是因为Int(string)仅在字符串可以解释为Int时才有效,所以Int("3")->3但是如果说Int("text")->nil怎么办,因为它不是能够将字符串解析为Int

如果在第一个示例中需要,您可以提供一个默认值,然后就可以了。

var b: Int = Int(a) ?? 0