Swift数组详细用法解析

一、说明

Swift数组中的类型必须一致,这一点与OC不同


// 数组初始化
var numbers = [0,1,2,3,4,5]
var vowels = ["A","E","I","O","U"]

// 数组的类型: [Int] 或者 Array<Int>
//var numbers: [Int] = [0,1,2,3,4,5]
//var numbers: Array<Int> = [0,1,2,3,4,5]

// 空数组
var emptyArray1:[Int] = []
var emptyArray2:Array<Int> = []
var emptyArray3 = [Int]()
var emptyArray4 = Array<Int>()

// 创建具有默认值的数组(相同元素的数组)
var allZeros = Array<Int>(repeating: 0, count: 5)
//[0,0,0,0,0]
var allZeros2 = [Int](repeating: 0, count: 5)
//[0,0,0,0,0]

二、常用方法

var numbers = [1,2,3,4,5]
var vowels = ["A","E","I","O","U"]
var emptyArray = [Int]()

// 数组长度
vowels.count

// 判空
numbers.isEmpty
emptyArray.isEmpty

// 获取元素
vowels[2]
// 数组越界是一个严重的错误
//vowels[-1]
//vowels[5]

// 获取第一个元素和最后一个元素,返回的是可选型
vowels.first
vowels.last  //.first和.last的返回值都为可选型
emptyArray.first

if let firstVowel = vowels.first{
  print("The first vowel is " + firstVowel)
}

vowels.first!

vowels[vowels.count-1]

// 获取最小,最大值
numbers.min() //1
vowels.max() //U

// 使用范围
numbers[2..<4] //[3,4]
numbers[2..<numbers.count] //[3,4,5]

// 包含
vowels.contains("A")
vowels.contains("B")

let letter = "A"
if vowels.contains( letter ){
  print("\(letter) is a vowel")
}
else{
  print("\(letter) is not a vowel")
}

vowels.index(of: "E") //获取索引,返回值为可选型

if let index = vowels.index(of: "E"){
  print("E is a vowel in position \(index+1).")
}
else{
  print("E is not a vowel.")
}

// 遍历
for index in 0..<numbers.count{
  numbers[index]
}

for number in numbers{
  print(number)
}

for (index, vowel) in vowels.enumerated(){
  //遍历数组索引和元素
  print("\(index+1): \(vowel)")
}

// 比较
var oneToFive = [1,2,3,4,5]
numbers == oneToFive //true

var oneToFive2 = [1,2,4,3,5]
numbers == oneToFive //true

//swift 3.0之前数组是有序的数据集合,swift 3.0后为无序

三、更多操作

var courses = ["A","B","C"]

// 添加元素
courses.append("D") //["A","B","C","D"]
print(courses)

// 数组常量
//使用let定义的数组不可以更改任何内容

courses += ["E"] //+=后面必须和前面的类型一致 //["A","B","C","D","E"]
print(courses)

// 两个数组相加
courses = courses + ["F","G"] //+后面必须是数组
//["A","B","C","D","E","F","G"]
print(courses)

courses.insert("Q", at: 5)
//["A", "B", "C", "D", "E", "Q", "F", "G"]
print(courses)

// 删除元素
courses.removeLast()
//["A", "B", "C", "D", "E", "Q", "F"]
print(courses)

courses.removeFirst()
//["B", "C", "D", "E", "Q", "F"]
print(courses)

courses.remove(at: 4)
//["B", "C", "D", "E", "F"]
//courses.removeAtIndex(10)
print(courses)

//区间删除操作
//courses.removeRange(0..<4)
//courses.removeRange(0..<10)
//print(courses)

//courses.removeAll()
//print(courses)

// 修改元素
courses[0] = "W"
//["W", "C", "D", "E", "F"]
print(courses)
//范围修改
courses[1...3] = ["W","W","W"]
//["W", "W", "W", "W", "F"]
print(courses)

courses[0...3] = ["W"]
//["W", "F"]
print(courses)

四、二维数组

var board = [ [1024,16,2,0] , [256,4,2,0] , [64,2,0,0] , [2,0,0,0] ]
//var board:[[Int]] = [ [1024,16,2,0] , [256,4,2,0] , [64,2,0,0] , [2,0,0,0] ]
//var board:[Array<Int>] = = [ [1024,16,2,0] , [256,4,2,0] , [64,2,0,0] , [2,0,0,0] ]
//var board:Array<[Int]> = [ [1024,16,2,0] , [256,4,2,0] , [64,2,0,0] , [2,0,0,0] ]
//var board:Array<Array<Int>> = [ [1024,16,2,0] , [256,4,2,0] , [64,2,0,0] , [2,0,0,0] ]

// 二维数组获取元素
board[0]
board[0][0]

// 获取二维数组两个维度的信息
board.count
board[0].count

// Swift中的二维数组,每一维度的元素数目可以不同
board[0].append(0)
board

// 为二维数组的第一个维度添加的元素是一个数组
board.append([0,0,0,0])
board += [ [0,0,0,0] ]
board

五、NSArray

NSArray是一个类,Array是一个结构体

var array1 = [] //会默认是NSArray,swift3.0之后该写法废除

var array2 = [1,2,3,4,5] as NSArray

var array3: NSArray = [1,"hello"]

var array4: [NSObject] = [1 as NSObject,"hello" as NSObject]

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Swift编程中数组的使用方法指南

    Swift 数组用于存储相同类型的值的顺序列表.Swift 要严格检查,它不允许错误地在数组中存放了错误的类型. 如果赋值创建数组到一个变量,它总是可变的,这意味着可以通过添加元素来改变它, 删除或更改其项目,但如果分配一个数组常量到则该数组,则数组是不可被改变的, 也就它的大小和内容不能被改变. 创建数组 可以使用下面的初始化程序语法来创建某种类型的空数组: 复制代码 代码如下: var someArray = [SomeType]() 下面是创建一个给定的大小,并用初始值的数组的语法: 复制

  • 详解Swift中对C语言接口缓存的使用以及数组与字符串转为指针类型的方法

    详解Swift中对C语言接口缓存的使用以及数组与字符串转为指针类型的方法 由于Swift编程语言属于上层编程语言,而Swift中由于为了低层的高性能计算接口,所以往往需要C语言中的指针类型,由此,在Swift编程语言刚诞生的时候就有了UnsafePointer与UnsafeMutablePointer类型,分别对应为const Type*类型与Type *类型. 而在Swift编程语言中,由于一般数组(Array)对象都无法直接用于C语言中含有指针类型的函数参数(比如:void*),所以往往需要

  • Swift4.0 Array数组详解

    数组的介绍 数组(Array)是一串有序的由相同类型元素构成的集合,数组中的集合元素是有序的,可以重复出现.在Swift中数组类型是Array,是一个泛型集合.数组分成:可变数组和不可变数组,分别使用let修饰的数组是不可变数组,使用var修饰的数组是可变数组. 数组的初始化 一.初始化一个空数组(类型:[数据类型]()) 1.创建一个整形的空数组 let  array = [Int] () 这里array 数组变量 被let 修辞 ,array数组是不可变数组,只能访问,不能修改 var  a

  • 探讨Swift数组和字典

    数组是一个存储多个相同类型的值的有序列表.相同的值,可以在不同的位置出现在一个数组中的多个次. Swift数组是具体的.他不同于Objective-C的的NSArray和NSMutableArray里的类,它可以存储任何类型的对象,不提供有关它们返回的对象的性质的任何信息.在斯Swift,一个特定的数组可以存储的值类型总是明确的,无论是通过显式类型批注,或通过类型推断,而不一定是类类型.如果创建诠释值的数组,例如,你不能插入比Int值以外的任何值到该数组.Swift数组是类型安全的,并且总是清楚

  • Swift中定义二维数组的方法及遍历方法示例

    //定义方式一 var array1 = [[Int]]() //定义方式二 var array2 = Array<Array<Int>>() array1 = [ [13,1,4], [5,1,7,6] ] array2 = array1 // 一维数组的定义 var v = [Int]() v = [4,5,7,8] array2.append(v) println(array1) println(array2) //数组的遍历 for var i=0; i<array1

  • Swift数组详细用法解析

    一.说明 Swift数组中的类型必须一致,这一点与OC不同 // 数组初始化 var numbers = [0,1,2,3,4,5] var vowels = ["A","E","I","O","U"] // 数组的类型: [Int] 或者 Array<Int> //var numbers: [Int] = [0,1,2,3,4,5] //var numbers: Array<Int>

  • C语言中extern详细用法解析

    在C语言中,修饰符extern用在变量或者函数的声明前,用来说明"此变量/函数是在别处定义的,要在此处引用".  1. extern修饰变量的声明.  举例来说,如果文件a.c需要引用b.c中变量int v,就可以在a.c中声明extern int v,然后就可以引用变量v.能够被其他模块以extern修饰符引用到的变量通常是全局变量.还有很重要的一点是,extern int v可以放在a.c中的任何地方,比如你可以在a.c中的函数fun定义的开头处声明extern int v,然后就

  • 无间断滚动marquee的详细用法解析

    新闻一 我是打头的 我向上运动 我向上运动 我向上运动 新闻二 我是打头的 我向上运动 我向上运动 我向上运动 新闻三 我是打头的 我向上运动 我向上运动 //重复一次新闻内容 document.write(news.tBodies[0].innercode) //实现不间断滚动 function newsScroll() { news.style.pixelTop=(news.style.pixelTop-1)%(news.clientHeight/2); } timer1=setInterv

  • marquee的详细用法解析

    先看下 marquee 的html 属性  <MARQUEE ALIGN="-"  BEHAVIOR="-"  BGCOLOR="-"  DIRECTION="-"  HEIGHT="-"  WIDTH="-"  HSPACE="-"  VSPACE="-"  LOOP="-"  SCROLLAMOUNT="-&

  • Python列表list数组array用法实例解析

    本文以实例形式详细讲述了Python列表list数组array用法.分享给大家供大家参考.具体如下: Python中的列表(list)类似于C#中的可变数组(ArrayList),用于顺序存储结构.   创建列表 复制代码 代码如下: sample_list = ['a',1,('a','b')] Python 列表操作 复制代码 代码如下: sample_list = ['a','b',0,1,3] 得到列表中的某一个值 复制代码 代码如下: value_start = sample_list

  • C语言详细讲解指针数组的用法

    目录 1. 指针数组定义方法 2. 指针的指针(二级指针) 3. 字符串和指针 4. 数组指针 定义方法 数组指针的用法 1. 指针数组定义方法 格式: 类型说明符 *数组名[ 元素个数 ] int *p[10]; // 定义了一个整型指针数组p,有10个元素,都是int *类型的变量 指针数组的分类: 同指针类型的分类,见上一篇 大多数情况下,指针数组都用来保存多个字符串. #include <stdio.h> int main() { char *name[5] = {"Hell

  • JS 数组基本用法入门示例解析

    本文实例讲述了JS 数组基本用法.分享给大家供大家参考,具体如下: 讲道理和Java差不多. instance: <html> <head> <title>js数组</title> <meta charset="UTF-8"/> <script type="text/javascript"> // 数组 var arr=[5]; console.log(arr); var arr=[true];

  • swift语言Codable 用法及原理详解

    目录 Codable Codable 的用法 JSON 和 模型的相互转换 解码(JSON Data -> Model): 编码(Model -> JSON Data): Codable 支持的数据类型 基础数据类型 Date 嵌套对象 枚举 自定义 CodingKeys Codable 的原理 Decodable 协议 Container 核心原理分析(Container <--> JSON) JSONDecoder 的解码过程 编译器帮我们做了什么? 默认值问题 属性包装器 @

  • Java类加载器ClassLoader用法解析

    这篇文章主要介绍了Java类加载器ClassLoader用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 正文 当程序主动使用某个类时,如果该类还未被加载到内存中,则JVM会通过加载.连接.初始化3个步骤来对该类进行初始化.如果没有意外,JVM将会连续完成3个步骤,所以有时也把这个3个步骤统称为类加载或类初始化. 一.类加载过程 1.加载 加载指的是将类的class文件读入到内存,并为之创建一个java.lang.Class对象,也就是说

  • vue v-model的用法解析

    v-model的基本用法 一.本节说明 前面的章节我们学习了v-bind指定,可以通过模型数据去影响视图.我们都知道VUE是支持双向数据绑定的,那么视图是如何影响数据的呢?那就要学到我们这一节的内容v-model.v-model可以将表单输入绑定到对应的模型数据. 二. 怎么做 我们通过v-model实现一个简单的需求 通过表单input绑定模型数据message,表单数据变化data.message也发生变化 然后通过Mustache表达式,将变化之后的message数据显示到视图页面上 三.

随机推荐