swift学习之数组

首先数组的定义:以有序的方式存储同样类型的值

(1)数组的简写(shorthand)语法

你能够通过Array<Element>,在这里,Element时数组存储元素的值的类型。也能够通过中括号来写[Element]

(2)创建一个空数组

var emptyArr = [Int]()(这里使用初始化方法创建一个Int型的空数组)

emptyArr.append(3)

emptyArr = [] (这里是用字面语句创建空数组)

note:emptyArr is now an empty array,but is still an type of [Int]

另外,就是我直接用var emptyArr = []创建一个空数组会产生一个错误,报了这是一个不可变数组,大家能够试试

(3)创建一个带有默认值的数组

swift提供了一种初始化一个数组。而且这个数组带有同样的默认值

var defaultArr = [Double](count: 3, repeatedValue: 0.0)(值类型是double型的)

println(defaultArr)

//the println is [0.0, 0.0, 0.0]

(4)通过add两个数组创建一个新的数组

通过(+)号操作将两个已经存在的同样类型的数组创建一个新的数组

var anotherArr = [Double](count: 3, repeatedValue: 2.5)

var newArr = defaultArr + anotherArr

println(newArr)

//the result is [0.0, 0.0, 0.0, 2.5, 2.5, 2.5]

(5)用字面量创建一个数组

中括号中面放一系列的值,以逗号分隔

var shopping:[String] = ["Eggs","Milk"]

这个声明了一个仅仅存储字符型的数组,由swift的类型判断,我们能够不用写明类型用字面量语法初始化数组存放同样类型的值时,因此,上面的样例能够更加简单点写

var shopping: = ["Eggs","Milk"]

(6)訪问和改变数组

我们学会了创建一个数组,那么接下来就要想怎么訪问一个数组,又怎么改变一个数组呢?

訪问和改变数组,我们能够通过方法和属性,或者下标语法

我们能够通过数组的仅仅读属性(.count)知道数组的元素个数

println("The shopping list contains \(shoppingList.count) items")    (The shopping list contains 2 items)

我们能够通过数组的Boolen属性(.isEmpty)检查数组的个数和0是否相等

if shoppingList.isEmpty{

println("The shopping list is empty")

}else{

println("The shopping list isn‘t empty")

}

我们能够通过array‘s append(_:)方法在数组的最后面加入元素

shoppingList.append("Flour")

println(shoppingList)       ([Eggs, Milk, Flour])

另一种方法。我们也能够通过(+=)操作加入一个或多个元素

shoppingList += ["Baking Powder"]

shoppingList += ["Chocolate Spread","Cheese","Butter"]

println(shoppingList)  ([Eggs, Milk, Flour, Baking Powder, Chocolate Spread, Cheese, Butter])

能够通过下标语法检索一个数组的值,在数组名后面加上中括号。在里面写上你想要的值所在的下标就能够取出相应的下标值了,和oc一样。第一个元素也是从0開始算起

var firstItem = shoppingList[0]

println(firstItem)  (firstItem is equal to "Eggs")

你也能够通过下标语法改变相应索引处的值

shoppingList[0] = "Six Eggs"

println(shoppingList)   ([Six Eggs, Milk, Flour, Baking Powder, Chocolate Spread, Cheese, Butter])和上面对照确实改变了第一个元素

在swift中能够通过下标语法改变一定范围的值,即使替代的值的长度和你替代的范围长度不同,如

shoppingList[4...6] = ["Bananas","Apples"]

println(shoppingList)

如今打印的结果是[Six Eggs, Milk, Flour, Baking Powder, Bananas, Apples]也就是数组有6个元素

shoppingList[4...6] = ["Bananas","Apples","Bananas","Apples"]

如今数组有8个元素了

可是请注意你不能通过下标语法给数组加入元素

往数组中插入元素我们能够通过调用insert(_:atIndex:)方法

shoppingList.insert("Maple Syrup", atIndex: 0)

println(shoppingList)      ([Maple Syrup, Six Eggs, Milk, Flour, Baking Powder, Bananas, Apples, Bananas, Apples])

相同的道理,能够通过调用removeAtIndex(_:)方法移除元素。而且能够接收被移除的元素(假如你不须要。就不用接收,直接忽略就好了)

var removedItem = shoppingList.removeAtIndex(0)

println(shoppingList)    ([Six Eggs, Milk, Flour, Baking Powder, Bananas, Apples, Bananas, Apples])

调用removeRange移除一定范围内的数组

var removedRangeItem: () = shoppingList.removeRange(6...7)

println(shoppingList)      ([Six Eggs, Milk, Flour, Baking Powder, Bananas, Apples])

调用removeLast()语法移除数组最后一个元素。而不是通过调用removeAtIndex(_:)方法。以免遍历数组一遍要

shoppingList.removeLast()

println(shoppingList)

数组的遍历

我们能够通过for-in循环遍历

println(shoppingList)

for item in shoppingList{

println(item)

(Six Eggs

Milk

Flour

Baking Powder

Bananas)

}

假设你须要每一个元素的下标和相应的值,你须要用enumerate()方法来遍历数组,这样返回一个元组,包含元素的下标和相应的值

for (index,value) in enumerate(shoppingList){

println("Item\(index):\(value)")

}

Item0:Six Eggs

Item1:Milk

Item2:Flour

Item3:Baking Powder

Item4:Bananas

这是swift2.0之前的写法,2.0之后用的是

for (index,value) in shoppingList.enumerate(){

println("Item\(index):\(value)")

}

这种方法

借鉴:https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/CollectionTypes.html#//apple_ref/doc/uid/TP40014097-CH8-ID105

时间: 2024-10-07 19:37:25

swift学习之数组的相关文章

swift学习笔记-数组

swift中数组用[]表示 1.创建一个空数组 let emptyArr = [String]() let emptyArr1 : [NSNumber] = [] 这两种方式都可以 2.访问元素 var numArr=["1","2","3"] println("第一个元素:\(test1Array[0])") println("最后一个元素:\(test1Array.last)") 3.判断数组是否为空

swift学习之数组(一)

首先数组的定义:以有序的方式存储相同类型的值 (1)数组的速写(shorthand)语法 你可以通过Array<Element>,在这里,Element时数组存储元素的值的类型,也可以通过中括号来写[Element] (2)创建一个空数组 var emptyArr = [Int]()(这里使用初始化方法创建一个Int型的空数组) emptyArr.append(3) emptyArr = [] (这里是用字面语句创建空数组) note:emptyArr is now an empty arra

Swift学习笔记数组与字典

swift中数组和字典都是以结构体的形式实现的. 首先,这个很奇葩,我不知道为什么这样设计,这样是出于一个什么样的考虑. 在C#中使用字典: Dictionary<int, string> dic = new Dictionary<int, string>(); Dictionary<int, string> dic1 = dic; dic.Add(1,"123"); dic1[1]="456"; Console.WriteLin

Swift学习—字符串&amp;数组&amp;字典

字符串 OC和Swift中字符串的区别 在OC中字符串类型时NSString,在Swift中字符串类型是String OC中字符串@"",Swift中字符串"" Swift中String是第一个结构体,性能更高 String支持直接遍历 Swift提供了String和NSString之间的无缝转换 字符串的使用 用反斜线 \ 和小括号 () 做字符串插值(把常量\变量插入到字符串中) let hand = 2var age1 = 20let string1 = &q

swift学习之数组、字典、控制流

// Playground - noun: a place where people can play import UIKit //2014-09-23 集合类型 Collection Types //............................................. //1.数组 /* 1. 数组是类型安全的 */ //1.1定义一个数组变量 var shoppingList:[String]=["apple","Eggs"] if sh

Swift学习笔记四:数组和字典

最近一个月都在专心做unity3d的斗地主游戏,从早到晚,最后总算是搞出来了,其中的心酸只有自己知道.最近才有功夫闲下来,还是学习学习之前的老本行--asp.net,现在用.net做项目流行MVC,而不是之前的三层,既然技术在更新,只能不断学习,以适应新的技术潮流! 创建MVC工程 1.打开Visual studio2012,新建MVC4工程 2.选择工程属性,创建MVC工程 3.生成工程的目录 App_Start:启动文件的配置信息,包括很重要的RouteConfig路由注册信息 Conten

Swift学习第一天之数组

Swift学习第一天: 1:数组的使用 数组的定义: let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 2:数组的遍历 for num in numbers { print(num) } 3:也是通过下标来制定内容 let num1 = numbers[0] let num2 = numbers[1] 4.定义可变不可变 `let` 定义不可变数组 `var` 定义可变数组 5.向可变数组里面追加内容 array1.append("wangwu"

Swift学习笔记(12)--数组和字典的复制

Swift中,数组Array和字典Dictionary是用结构来实现的,但是数组与字典和其它结构在进行赋值或者作为参数传递给函数的时候有一些不同. 并且数组和字典的这些操作,又与Foundation中的NSArray和NSDictionary不同,它们是用类来实现的. 注意:下面的小节将会介绍数组,字典,字符串等的复制操作.这些复制操作看起来都已经发生,但是Swift只会在确实需要复制的时候才会完整复制,从而达到最优的性能. 字典的赋值和复制操作 每次将一个字典Dictionary类型赋值给一个

Swift学习笔记(5)--数组

数组的下标从0开始计数,相关方法属性涉及到下标时也从0开始计数 1.定义: //1.可变数组 var cityArray = ["Portland","San Francisco","Cupertino"] //2.不可变数组 let cityArray2 = ["Portland","San Francisco","Beijing"] //3.空数组 var animalArray =