swift-11数组

193 阅读3分钟

我以前做的swift笔记, 之前都是整理在onenote上, 最近想到整理出博客. 也方便自己查找, 可以当做自己的一份文档.

数组的定义

    func demo() {
        //oc 使用[] 定义数组 swift一样 但是没有 '@'
        // 自动推导的结果 [String] 表示数组中存放的都是String
        //跟 oc中的数组指定泛型类似
        let array = ["小王", "张三", "李四"]
        print(array)
        
        // [Int] 表示存放的都是 Int
        //swift 中基本数据类型不需要包装
        let array2 = [1, 2, 3]
        print(array2)
        
        //CG 结构体
        let p = CGPoint(x: 10, y: 20)
        let array3 = [p]
        print(array3)
        
        //混合数组
        //开发中几乎不用 因为数组是通过下标索引
        //如果数组中的类型不一致 自动推导的结果 [NSObject]
        //在swift中还有一种类型 [AnyObject] 任意对象
        //在swift 中一个类可以没有任何 '父类'
        //在混合的数组中 CG 结构体 需要包装
        //NSValue(cgPoint: p) 单独拿出来写, 不然没有智能提示
        let array4 = ["张三", 1, NSValue(cgPoint: p)] as [Any]
        print(array4)
    }

数组的遍历

    func demo1() {
        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("----- enum block 同时遍历下标和内容")
        for e in array.enumerated() {
            print("\(e.offset) \(e.element)")
        }
        
        //4 遍历下标和内容2
        print("----- enum block 同时遍历下标和内容2")
        for (n, s) in array.enumerated() {
            print("\(n) \(s)")
        }
        
        //5 反序遍历
        print("---- 反序遍历")
        for s in array.enumerated().reversed() {
            print(s)
        }
        
        //6 反序遍历 索引和内容
        print("----- 反序遍历 索引和内容")
        for (n, s) in array.enumerated().reversed() {
            print("\(n) \(s)")
        }
    }
func demo2() {
	        var array = ["老李", "木木", "小羊"];
	        
	        //增 追加元素
	        array.append("教主")
	        print(array)
	        
	        //修改 通过下标定位
	        array[3] = "笑笑"
	        print(array)
	        
	        //删
	        array.remove(at: 3)
	        print(array)
	//        array.removeAll()
	//        print(array)
	//        print(array.capacity)
	        
	        array.removeAll(keepingCapacity: false)
	        print(array)
	        print(array.capacity)
	        
	    }

数组的容量

	    func demo3() {
	//        //定义一个数组 指定类型是 存放 Int 的数组 但是没有初始化
	//        var array: [Int]
	//        //给数组进行初始化
	//        array = [Int]()
	        
	        // 以上两句代码可以合并成一句
	        var array = [Int]()
	        print("初始容量 \(array.capacity)")
	        for i in 0..<8 {
	            array.append(i)
	            print("\(array) 容量\(array.capacity)")
	        }
	        
	        array.append(1)
	        
	    }

数组合并

	    func demo4() {
	        var array = ["张三", "消防", "李四"]
	        let array1 = ["老刀", "1", "2"]
	        
	        array += array1
	        print(array)
	    }