美文网首页
Swift UserDefaults (Optional带来的坑

Swift UserDefaults (Optional带来的坑

作者: 子非鱼7868 | 来源:发表于2018-07-19 20:29 被阅读239次

    需要写个历史地址记录,用的是userDefaults存的,贴上代码:

    1.png
    2.png
    问题:测试机a里一开始userDefaults里有值,所以第二次,第N次,添加城市都是正常的,到用测试机b的时候,第一次添加城市就报错.
    原因是:因为第一次存userDefaults里面是没有值的,所以cityListArray = userDefaults.array(forKey: "cityList") as! [String] 3.png as!强制解包了,但是取出来的数组是空的,所以报错
    那我就将数组定义成可选值: 4.png
    5.png
    感觉是没有问题的,只是用可选值处理了数组为空的一种情况,但实际测试时,无论是第一次还是后面几次的添加城市,都不会被userDefaults存下来,cityListArray一直是空的,每次都会走到if语句中,不走else,加了断点之后,感觉问题就是出在这里 6.png
    cityListArray可能已经在这里被设置成nil了将这行代码改成:
    cityListArray = userDefaults.array(forKey: "cityList") as? [String] ?? []问题得到解决,后来想了下,如果我这么设置的话应该也是可以的(未测试)主要是将数组为nil的情况拿出来判断 7.png

    ------------------------这是分割线-----------------------

    不知道UserDefaults相同的key 会不会覆盖,做了个测试:


    9.jpg

    同UserDefaults同key 是会覆盖的

    相关文章

      网友评论

          本文标题:Swift UserDefaults (Optional带来的坑

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