swift数组

/*

 1. 数组的定义

 2. 数组遍历

 3. 数组的增/删/改

 4. 数组的合并 数组的合并方法比较简单

 */

class ViewController: UIViewController

{

 

    override func viewDidLoad()

    {

        super.viewDidLoad()

        // Do any additional setup after loading the view, typically from a nib.

        demo5()

    }

    

    //MARK: - 数组的合并

    func demo5()

    {

        var array = ["张三", "小芳", "小样"]

        let array2 = ["老唐"]

        

        // 将array2的内容合并到array中

        // 主要:要合并数组的两个类型必须一致

        array += array2

        print("array=\(array)")

    }

    

    //MARK: - 数组容量

    func demo4()

    {

        // 定义一个数组,指定类型是 存放 Int的数组,但是没有初始化

        var array: [Int]

        

        // 个数组初始化

        array = [Int]()

        

        // 以上两句代码可以合并一句

        var array1 = [Int]()

        

        array.append(1)

        

    }

    

    //MARK: - 数组的增/删/改

    func demo3()

    {

        // OC 中数组可变NsMutalbeArray(var)/不可变NSArray(let)

        var array = ["张三", "小芳", "小样"]

        

        // 追加元素

        array.append("老王")

        print("array=\(array)")

        

        // 修改,通过下标定位

        array[0] = "hehe"

        print("array=\(array)")

        

        // 删除

        array.remove(at: 1)

//        array.removeAll()

        array.removeAll(keepingCapacity: true)

        

        print("array.capacity=\(array.capacity)")

        

        

    }

    

    

    //MARK: - 数组遍历

    func demo2()

    {

        let array = ["张三", "唐斌", "小样"]

        

        // 1. 按照下标遍历

        print("-- 按下标遍历")

        for i in 0..<array.count

        {

            print(array[i])

        }

        

        // 2. 按for in 遍历元素

        print("--按for in 遍历元素")

        for s in array

        {

            print(s)

        }

        

        // 3. enum block 遍历,同时遍历下标和内容

        print("--同时遍历下标和内容")

        for e in array.enumerated()

        {

            print("\(e.offset)  \(e.element)")

        }

        

        // 4. 遍历下标和内容2

        print("遍历下标和内容2")

        // n是数组下标;s是数组元素

        for (n, s) in array.enumerated()

        {

            print("\(n)  \(s)")

        }

        

        // 5. 数组反序遍历

        print("--数组反序遍历")

        for s in array.reversed()

        {

            print(s)

        }

        

        // 6. 反序索引内容

        print("--反序索引内容");

        // 错误的反序

        for (n, s) in array.reversed().enumerated()

        {

            print("\(n)  \(s)")

        }

        print("--正确地反序")

        for (n, s) in array.enumerated().reversed()

        {

            print("\(n)  \(s)")

        }

    }

 

    //MARK: - 数组的定义

    func demo1()

    {

        // OC 使用 [] 定义数组,Swift一样,但是 没有‘@‘

        // 自动推导的结果[String]-> 表示数组中存放的都是String

        // 跟OC中的数组指定泛型类型

        let array = ["张三", "消防", "加入"]

        print("array=\(array)")

        

        //[Int] -> 表示存放的都是Int

        // Switf 中基本数据类型不须要包装

        let array2 = [1, 2, 3, 4]

        print("array2=\(array2)")

        

        

        //CG结构体

        let p = CGPoint(x: 10, y: 20)

        let array3 = [p]

        print("array2=\(array3)")

        

        // 混合数组:开发费中几乎不用,因为数组是靠下标索引

        // OC如果数组中的类型不一致,自动推导的结果[NSObject]

        // 在Swift中还有一种类型,[Any]->任意对象

        // 在Swift中一个类可以没有任何‘父类’

        // *** 在混合数组中 CG 结构体须要包装

        let array4 = ["唐斌", 4, NSValue(cgPoint: p)] as [Any]

        print("array4=\(array4)")

        

    }

    

}

posted on 2017-07-28 14:13  TangBin604  阅读(114)  评论(0编辑  收藏  举报

导航