美文网首页
二十三、Swift3.0之as!和as?(仅自己当笔记使用)

二十三、Swift3.0之as!和as?(仅自己当笔记使用)

作者: ZhengYaWei | 来源:发表于2017-03-15 23:15 被阅读89次

    as!使用场合
    向下转型(Downcasting)时使用。由于是强制类型转换,如果转换失败会报 runtime 运行错误。

    class Animal {}
    class Cat: Animal {}
    let animal :Animal  = Cat()
    let cat = animal as! Cat
    

    as?使用场合
    as? 和 as! 操作符的转换规则完全一样。但 as? 如果转换不成功的时候便会返回一个 nil 对象。成功的话返回可选类型值(optional),需要我们拆包使用。
    由于 as? 在转换失败的时候也不会出现错误,所以对于如果能确保100%会成功的转换则可使用 as!,否则使用 as? 。 上一节的网络请求中使用的as?

    let animal:Animal = Cat()
    if let cat = animal as? Cat{
        print("cat is not nil")
    } else {
        print("cat is nil")
    }
    

    相关文章

      网友评论

          本文标题:二十三、Swift3.0之as!和as?(仅自己当笔记使用)

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