swift可选链和类型转换

来源:互联网 发布:iphone库存软件 编辑:程序博客网 时间:2024/06/11 02:21

/**

    可选链是swift特有的语法格式。如果有值就返回值,没有就返回nil

    当可选值为空时,可选链即刻失败

    可怜的使用就是在可选属性调用的时候,前面加上if如果有的话就执行代码,else在里面执行没有值时的代码。

    */

    

    

    class Person {

        

        var city:City?

        

    }

    

    

    class City {

        

        var cityName:String?

        var cityCountry = "中国";

        

        func cityInfo(){

            

            print("这是一个好地方");

        }

    }

let xiaoming = Person();

        

      

        if let cityName = xiaoming.city?.cityName{

            print("\(cityName)");

        }else{

            print("没有cityName");

        }

        

        

        if let cityCountry = xiaoming.city?.cityCountry{

            print("\(cityCountry)");

        }else{

            print("没有cityCountry");

        }

        

        

        if xiaoming.city?.cityInfo() != nil {

            print("可以进行城市介绍");

        }else{

            print("无法进行城市介绍");

        }

        


/**

    类型转换。

    1子类的对象赋值为基类。

     var XX:UIScrollView = UITableView()....

    

    2】类型检查。

    如果判断一个对象是不是牟恩子类的对象,使用 "is"关键字

    

    var bool = h is XX true or false

    

    3】类型转换

    有时需要子类中独有的方法或者属性时,还是需要将该对象作为子类对象来使用的。这里就需要强制转换。

    在对使用父类声明的对象进行类型转换的时候,需要使用 “as”关键字

    

    var hero = h as Hero  (Hero是子类  h 是通过父类创建出来的。)

    

    但是如果类型转换失败,因为本身就不属于这种类,就会错误。

    这时引入新的关键字“as

    

    var m = h as? Hero (不确定h的具体类型。)

    

    */

    

    

    /**

    如果一个数组存放很多对象。同时类型不确定。可以使用Any AnyObject

    Any表示任何数据类型。 包括基本数据类型或者类的对象。

    

    AnyObject表示任何对象。不包括IntLong,Float,Double等类型

    */

    


        _ = Array<Any>();



0 0