Swift字典Dictionaries与可选型
在swift当中,字典Dictionary元素的返回值是可选型的!
1 | var pets = ["Polly":"Dog", "Joey":"Goldfish"] |
之所以会这样,是因为在我们访问字典元素的时候,我们有可能无法确定字典的元素键是否存在!这个键很有可能是不存在的,因此元素可能为nil
。当返回Optional时,我们就能使用代码来捕获键为空(不存在某key)的情况!在上面的代码第二行的返回值是Optional(“Dog”)!而在第三行时,我们使用了强制!
解包,所以返回的值是"Dog"
!
但是字典当中元素的键不一定在每时每刻都被我们知晓,因此使用强制解包是可能会导致程序crash的!
Notice:
对于字典dictionary中元素,不管元素存不存在,我们都可以使用可选型方式去解包!但是我们却不能一直使用!
强制解包!
1 | print(pets["Tome"]) //OK |
当我们不确定一个元素存不存在时,最好的处理方法是是用if
或者 if let
来解包!这样的解包是安全的!
1 | var preferences = [ |
实例中,我们是用了if
和if let
两种方式来解包!并且也是用了!
来强制解包!在解包的过程当中,如果你不确定元素是否存在时,我们最好是用if let
的方式来处理!这样的解包unwrapping
方式不会产生程序崩溃!
只有在解包之后,我们才可以对解包出来的值进行操作!
1 | if subscribed { |
这一段代码是在解包之后存在的,事实上,解包出来的subscribed的取值是确定的!如果想捕获解包异常,我们可以在if let
上添加else
分支来进行操作!