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

//
//  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)
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值