Swift4.0 学习笔记 第八节:数组

本文详细介绍了Swift语言中数组的各种操作方法,包括数组的定义、增删改查、合并及遍历等常见操作,并通过具体示例展示了每种操作的具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//
//  ViewController.swift
//  011-数组
//
//  Created by 庄壮勇 on 2018/1/3.
//  Copyright © 2018年 Personal. All rights reserved.
//

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        demo5()
    }
   
    // MARK: - 数组的合并
    func demo5() {
        var array:[Any] = ["张三","小芳","小羊"]
        let array2 = ["老刀","1","2",180] as [Any]
       
        // 将array2 的内容合并到 array
        // ***注意: 要合并数组的类型必须一致
        array += array2
       
        print(array)
    }
   
    // MARK: - 数组的容量
    func demo4() {
        // 定义一个数组,指定类型是 存放Int 的数组,但是没有初始化
//        var array:[Int]
//        // 给数组进行初始化
//        array = [Int]()
       
        // 以上两句代码可以合并成一句
        var array = [Int]()
        print("初始容量 \(array.capacity)")

        for i in 0..<8 {
            array.append(i)
            print("\(array) 容量 \(array.capacity)")
        }
       
    }

    // MARK: - 数组的增/删/改
    func demo3() {
        // OC 中数组分可变NSMutableArray(var) 不可变 NSArray(let)
        var array = ["张三","小芳","小羊"]

        // 追加元素
        array.append("老王")
        print(array)
       
        // 修改,通过下标定位
        array[0] = "小王"
        print(array)
       
        // 数组越界 - Index out of range
        //array[5] = "XXXX"
        //print(array)
        // 删除
        array.remove(at: 3)
        print(array)
       
        // 删除全部,并且保留空间
        array.removeAll(keepingCapacity: true)
        print("\(array) \(array.capacity)")
    }
   
    // MARK: - 数组的遍历
    func demo2() {
        let array = ["张三","小芳","小羊"]
       
        // 1.按照下标遍历
        print("--- 按照下标遍历")
        for i in 0..<array.count {
            print(array[i])
        }

        // 2.for in 遍历元素
        print("--- 按照下标遍历")
        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 就是[String] 数组 n 对应的 String 元素
        // 其中 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)")
        }
        // 7. 正确的反序
        print("--- 正确反序索引&内容")
        // 先枚举,再反序
        for (n,s) in array.enumerated().reversed() {
            print("\(n) \(s)")
        }
    }
   
    // MARK: - 数组的定义
    func demo1() {
       
        // OC 使用[] 定义数组,Swift一样,但是没有'@'
        // 自动推导的结果[String] -> 表示数组中存放的都是String
        // 跟OC 中的数组指定泛型类似
        let array = ["张三","小芳","小羊"]
       
        print(array)
       
        // [Int] -> 表示存放的都是Int
        // Swift 中基本数据类型不需要包装!
        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] -> 任意对象
        // 在Swift 中一个类可以没有任何‘父类’
        NSValue(cgPoint: p)
        let array4 = ["张三",1,NSValue(cgPoint: p)] as [Any]
        print(array4)
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值