美文网首页
Swift Dictionary found nil whil

Swift Dictionary found nil whil

作者: leonStep | 来源:发表于2020-01-03 09:57 被阅读0次

    最近老项目准备用swift写,对swift不熟,造成很对低级错误

    使用dictionary["key"]取值时:

    let value = dictionary["key"] as! String

    报错

    diction unexpectedly found nil while unwrapping an Optional value

    原因是dictionary不存在这个key,!强制解包时出现nil就会报这个错误

    崩溃的原因就是dict["key"]为nil,对nil强制取值而崩溃。

    项目中的崩溃就是这样导致的:后台返回的json跟你预期的不一致,你想在一个字典里强行取出一个不存在的key对应的value。

    转载别人的文章需要以下几种方案
    转载链接

    方案一:使用可选链表表达式

    let dict = ["first" : "1"]
    let str: String? = dict["second"]
    print(str ?? "2") // 如果为空就打印“2”
    

    方案二:使用OC版的if判断

    let dict = ["first" : "1"]
    
    if (dict["second"] != nil) {
        print(dict["second"]!)
    } else {
        print("没这个key")
    }
    

    之所以称其为OC版的if,是因为它让我想到了OC。

    方案三:使用swift版的if判断

    let dict = ["first" : "1"]
    
    if let str: String = dict["second"] {
        print(str)
    } else {
        print("没这个key")
    }
    不得不说,这很swift。
    

    方案四:开启守护者模式

    let dict = ["first" : "1"]
    guard let str: String = dict["second"] else {
        print("没这个key")
        return
    }
    print(str)
    

    总结

    用"!"强制解包的时候要慎重,做好容错处理有备无患。

    相关文章

      网友评论

          本文标题:Swift Dictionary found nil whil

          本文链接:https://www.haomeiwen.com/subject/xaxzoctx.html