热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

ViewController.swift011-数组Createdby庄壮勇on201813.Copyright©2018年Personal.Allrightsreserved.i

//
//  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 &#61; ["张三","小芳","小羊"]

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

        // 2.for in 遍历元素
        print("--- 按照下标遍历")
        for s in array {
            print(s)
        }
       
        // 3. enum block 遍历&#xff0c; 同时遍历下标和内容
        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("--- 正确反序索引&内容")
        // 先枚举&#xff0c;再反序
        for (n,s) in array.enumerated().reversed() {
            print("\(n) \(s)")
        }
    }
   
    // MARK: - 数组的定义
    func demo1() {
       
        // OC 使用[] 定义数组&#xff0c;Swift一样&#xff0c;但是没有&#39;&#64;&#39;
        // 自动推导的结果[String] -> 表示数组中存放的都是String
        // 跟OC 中的数组指定泛型类似
        let array &#61; ["张三","小芳","小羊"]
       
        print(array)
       
        // [Int] -> 表示存放的都是Int
        // Swift 中基本数据类型不需要包装!
        let array2 &#61; [1,2,3,4,5]
        print(array2)
       
        // CG结构体
        let p &#61; CGPoint(x: 10, y: 300)
        // [CGPoint]
        let array3 &#61; [p]
        print(array3)
       
        // 混合数组: 开发中几乎不用&#xff0c;因为数组是靠下标索引
        // 如果数组中的类型不一致&#xff0c;自动推导的结果[NSObject]
        // 在Swift 中还有一种类型[AnyObject] -> 任意对象
        // 在Swift 中一个类可以没有任何‘父类’
        NSValue(cgPoint: p)
        let array4 &#61; ["张三",1,NSValue(cgPoint: p)] as [Any]
        print(array4)
    }
}



推荐阅读
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • Android JSON基础,音视频开发进阶指南目录
    Array里面的对象数据是有序的,json字符串最外层是方括号的,方括号:[]解析jsonArray代码try{json字符串最外层是 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • Day2列表、字典、集合操作详解
    本文详细介绍了列表、字典、集合的操作方法,包括定义列表、访问列表元素、字符串操作、字典操作、集合操作、文件操作、字符编码与转码等内容。内容详实,适合初学者参考。 ... [详细]
  • 基于dlib的人脸68特征点提取(眨眼张嘴检测)python版本
    文章目录引言开发环境和库流程设计张嘴和闭眼的检测引言(1)利用Dlib官方训练好的模型“shape_predictor_68_face_landmarks.dat”进行68个点标定 ... [详细]
author-avatar
sean
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有