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
swift学习之数组的更多相关文章
- Swift学习—字符串&数组&字典
字符串 OC和Swift中字符串的区别 在OC中字符串类型时NSString,在Swift中字符串类型是String OC中字符串@"",Swift中字符串"" ...
- Swift学习笔记(12)--数组和字典的复制
Swift中,数组Array和字典Dictionary是用结构来实现的,但是数组与字典和其它结构在进行赋值或者作为参数传递给函数的时候有一些不同. 并且数组和字典的这些操作,又与Foundation中 ...
- swift学习第六天:数组
数组 数组的介绍 数组(Array)是一串有序的由相同类型元素构成的集合 数组中的集合元素是有序的,可以重复出现 Swift中的数组 swift数组类型是Array,是一个泛型集合 数组的初始化 数组 ...
- 【swift学习笔记】二.页面转跳数据回传
上一篇我们介绍了页面转跳:[swift学习笔记]一.页面转跳的条件判断和传值 这一篇说一下如何把数据回传回父页面,如下图所示,这个例子很简单,只是把传过去的数据加上了"回传"两个字 ...
- 今天开始Swift学习
今天开始Swift学习 在此记录笔记 以备之后查阅! allenhuang
- iOS ---Swift学习与复习
swift中文网 http://www.swiftv.cn http://swifter.tips/ http://objccn.io/ http://www.swiftmi.com/code4swi ...
- 12套swift学习资源分享
虽然objective-c编程语言在过去很长一段时间都是iOS应用开发的基础语言,且很多iOS开发者对其也深爱有佳,但是随着swift编程语言的问世,迅速发展为开发者追捧的语言.且今年伴随着swift ...
- Swift学习--常量.变量.数据类型的使用(二)
一.Swift中的数组 //Swift中的数组 //NSArray *arr = @["",""]; //和OC数组的区别就是去掉前面的@ let arr11 ...
- PHP学习之中数组-遍历一维数组【2】
在PHP学习之中数组[1]中学会怎么创建一个数组,如果PHP学习之中数组[1]中的元素多的话,我们访问元素又是一个问题了,下面我们就使用for语句while,foreach来遍历我们的数组: < ...
随机推荐
- 关于iptables允许samba的问题
今天同事跟我说他们部门的共享不能用了,想了想,最近变更的只有iptables,于是看看是否是这个原因,发现没有允许samba的入站和出站规则,我的iptables规则默认是所有都drop的,但是不知确 ...
- Docker学习总结(10)——10分钟玩转Docker
1.前言 进入云计算的时代,各大云提供商AWS,阿里云纷纷推出针对Docker的服务,现在Docker是十分火爆,那么Docker到底是什麽,让我们来体验一下. 2.Docker是什麽 Docker是 ...
- VS2015--win32project配置的一些想法之cmake
近期两天都在配置一个win32项目.为了实现跨平台,写底层代码的人仅仅build了安卓和ios的工程,没有build win32项目. 因为对一些库不是非常了解.配置起来非常困难,心力交瘁. 为了实现 ...
- 关于多线程lock-free代码
首先要理解JVM内存模型,可以参考我之前的文章. 然后C++里面其实有一样的指令排序的问题.虽然C++11里面针对happens-before规则做了一些语义上面的支持.但是普通C/C++没有做这些支 ...
- hdoj-5099-Comparison of Android versions
Comparison of Android versions Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (J ...
- Android bluetooth介绍(一):基本概念及硬件接口
关键词:蓝牙硬件接口 UART PCM blueZ 版本号:基于android4.2之前版本号 bluez内核:linux/linux3.08系统:android/android4.1.3.4作者 ...
- 大浪淘沙,JSP终将死去
首先讲明,我不是标题党. 这纯属我个人的意见.勿喷. 先来讲讲JSP是怎么出现的吧. 在早期的WEB中,JS.CSS远未成熟,技术慷慨向并不明白!因为前端语言的匮乏.各家大公司都推出基于后端的模板语言 ...
- BZOJ4477: [Jsoi2015]字符串树
[传送门:BZOJ4477] 简要题意: 给出一棵n个点的树,树上的边都代表一个字符串,给出Q个询问,每个询问输入x,y和字符串s,求出x到y的路径上以s为前缀的字符串个数 题解: 自己yy了一波可持 ...
- Getting Started with MongoDB (MongoDB Shell Edition)
https://docs.mongodb.com/getting-started/shell/ Overview Welcome to the Getting Started with MongoDB ...
- m_Orchestrate learning system---二十六、动态给封装好的控件添加属性
m_Orchestrate learning system---二十六.动态给封装好的控件添加属性 一.总结 一句话总结:比如我现在封装好了ueditor控件,我外部调用这个控件,因为要写数据到数据库 ...