iOS-swiftSwift项目相关

九、Swift3.0之数组的定义、遍历、增删改、容量以及合并

2017-02-23  本文已影响2519人  ZhengYaWei

数组的定义,包含混合数组

    func demo() {
        //自动推到的结果是[String],表示数组中存放都是[String],这一点和OC中的数组制定泛型类似
        let array = ["张三","李四","王二"]
        print(array)
        
        //Swift中的基本数据类型不用包装,OC中需要用包装
        //自动推到类型为[Int]
        let array2 = [1,2,3,4,5]
        print(array2)
        
        //CG结构体
        let p = CGPoint(x: 10, y: 300)
        //自动推到类型为[CGPoint]
        let array3 = [p]
        print(array3)
        
        //混合数组:开发中几乎不用
        //如果数组中的类型不一致,自动推到结果为[NSObject]
        //在Swift中还有一种类型[AnyObject]-->代表任意对象,比NSObject包含的范围更广。说明:在Swift中一个类可以没有任何父类,所以会出现AnyObject
        //*** 在混合的数组中,CG结构体需要包装,如果不是混合类型数组就不用包装
        let point = CGPoint(x: 10, y: 300)
        let array4 = ["张三",1,NSValue(cgPoint:point)] as [Any]
        print(array4)
    }

数组的六种遍历方式,包含倒序遍历两种方式。

func demo() {
        let array = ["张三","李四","王二"]
        //1、按照下标遍历
        for i in 0..<array.count {
            print(array[i])
        }
        //2、按照元素遍历
        for s in array{
            print(s)
        }
        //3、enum block,同时遍历下标和元素
        for e in array.enumerated() {
            //这个e是一个元组,里面包含offset(下标)   element(内容)
            print("\(e.offset)\(e.element)")
        }
        //4、遍历下标和内容之二
        for(n,s) in array.enumerated(){
            //n是索引   s是n索引对应的元素,其中n和s可以随意写
            print("\(n) \(s)")
        }
        //5、倒序遍历
        for s in array.reversed(){
            print(s)
        }
        //6、倒序索引和元素遍历
        //这是正确的,下面的第二个是错误的。应该先枚举在倒序
        for (n,s) in array.enumerated().reversed(){
            print("\(n)\(s)")
        }
        //这是错误的
        //for (n,s) in array.reversed().enumerated(){
        //    print("\(n)\(s)")
        //}
    }

数组的增删改操作。

func demo() {
        var arr = ["张三","李四","王二"]
        //增
        arr.append("老王")
        arr.insert("你好", at: 0)
        print(arr)
        
        //改
        arr[0] = "小王"
        print(arr)
        
        //删
        arr.remove(at: 4)
        print(arr)
        //删除全部,并且保存空间
        arr.removeAll(keepingCapacity: true)
    }

数组的容量。

func demo() {
        //定义一个数组,制定类型存放[Int]的数组  但是没有初始化
        var array: [Int]
        //给数组初始化
        array = [Int]()
        
        //以上两句可以合并写成一句
        var array2 = [Int]()
        print("初始容量\(array2.capacity)")
        for i in 0..<8{
            array2.append(i)
            //容量不够使用的时候,每次增加之前容量的一倍,这样可以避免每次增加数据时都开辟空间
            print("\(array2)容量\(array2.capacity)")
        }
    }

数组的合并。

 func demo() {
        //常规数组合并
        var arr = ["张三","李四","王二"]
        let arr2 = ["小王","1"]
        arr += arr2;
        print(arr)
        
        //注意:要合并的两个数组的类型必须要一致。如下是一种错误的写法:
//        var arr3 = ["张三","李四","王二"]
//        let arr4 = ["小王","1",100]
//        arr3 += arr4;
//        print(arr3)
        //正确的写法如下
        var arr3: [NSObject] = ["张三" as NSObject,"李四" as NSObject,"王二" as NSObject]
        let arr4: [NSObject] = ["小王" as NSObject,"1" as NSObject,100 as NSObject]
        arr3 += arr4;
        print(arr3)
    }
上一篇 下一篇

猜你喜欢

热点阅读