zoukankan      html  css  js  c++  java
  • Swift3.0-NSNull

      NSNull出场最多的时候是JSON解析。

    在OC中,NSDictionary和NSArray只能存储对象,所以对于JSON可能存在的null,映射的是NSNULL,并且OC没有强制类型检查,可以任意的向对象发送消息,这样如果json反序列化出的字典或者数组有null的时候,就会崩溃。例如返回的json 取age字段 integerValue实现拿到age数字。但当age是空的时候,给一个null发送消息,就会野指针崩溃。

    OC的解决办法一般是 每次发消息的时候都类型检查,确保不空。或者添加NSNull的分类,让它响应各种常见方法(integerValue)并且返回默认值。但是这两种方法都不太好。

      而在Swift中,因为强调类型安全。所以基本不会出现这种问题。

            if let string = json as? String {
                print("json")
            }else {
                print("解析失败")
            }

      这时打印结果一定是解析失败。

      不过Swift因为类型判断很严格,所以在类型转换的时候也很复杂。可能要取很深层次的节点要写无数个if let 和 as?强转才行。

      此时可以从git上下载SwiftyJSON框架,这可是拥有上万star的框架,完美的解决了冗余的写法,可以直接json[""][""][0][""]的方法游走于数组和字典中。大大的节约了时间。

      

      

  • 相关阅读:
    一枚渣硕的2019校招记录
    PLT hook笔记
    从排序数组中删除重复项
    golang刷Leetcode系列 --- 实现strStr()
    Docker镜像浅谈
    golang刷Leetcode系列 --- 加1
    ubuntu包管理机制
    LeetCode 234——回文链表
    LeetCode 19——删除链表的倒数第N个节点(JAVA)
    LeetCode 160——相交链表(JAVA)
  • 原文地址:https://www.cnblogs.com/sgxx/p/6207579.html
Copyright © 2011-2022 走看看