【Swift】Optional笔记
2018-05-10 本文已影响0人
NiniaW
- Optional的本质是枚举类型。
public enum Optional<Wrapped> : ExpressibleByNilLiteral {
case none
case some(Wrapped)
...
}
-
String?
是optional,其值可以是nil,可以根据需要unwrap;
String!
也是optional,其值可以是nil,在调用时会自动unwrap;
String
不是optional,调用时发现其值为nil会被报错。 -
在Optional Chaining中,如果有一个表达式是optional的,那么整个表达式的结果就是optional的。所以以下代码会产生编译错误:
if aPerson.son?.firstName == "xxx" {
...
}
需要对表达式unwrap之后才能进行处理:
if let firstName = aPerson.son?.firstName {
...
}