数组
swift中的集合有:数组、字典、set。三者的区别为
- 1、在swift中的集合类=是值类型,而OC中的是引用类型
- 2、在swift中使用引用计数的概念来管理内存,但是引用计数只适用于对象类型,值类型不需要管理
- 3、swift中引用计数管理内存的方法与OC中的引用计数管理内存的方法还是不同的
- 4、在swift中数组是可以存放任意类型的,OC中只能存放对象类型
数组
1. swift中,Array也没有可变和不可变之分,而是取决于用什么关键字来修饰,var就是可变,let就是不可变
2. 使用字面量来给一个数组赋值
当我们显式声明数组中元素的类型时,内部的元素类型必须一致(隐式的话只要是对象就可以)
var array:[String] = ["ayang","yang","shuaiqi"]
数组增加元素
1.调用append方法进行元素添加时,是添加到数组最后面
array.append("shuai")
2.调用+=方法进行元素添加,也是添加到数组最后面
array += ["haha","heihei"]
3.调用insert方法进行元素添加
array.insert("hehe",atIndex: 0)
数组删除元素
1.删除指定下标的元素
array.removeAtIndex(2)
2.删除所有元素
array.removeAll(keepCapacity: true)
改变数组中的元素
1.通过下标来更改元素
array[0] = "happy" array[1] = "yes"
2.利用下面的方法,不仅可以修改,而且可以删除元素
array[0...3] = ["1","2","3"]
数组查询
利用for-in来进行数组遍历
for value in array { println("value = \(value)") }
使用全局enumerate函数返回一个由每一个数据项索引值和数据值组成的元组
for (index,value) in enumerate(array) { println("\(index):\(value)") }
数组的初始化(声明存储固定类型的数组)
使用构造方法创建的是由一个特定数据类型构成的数组
第一种方式
var initArray:[String] = [String](count: 3,repeatedValue: "hehe")
第二种方式
var initArray2:Array<String> = Array(count: 4,repeatedValue: "jian")
字典
使用字面量来给字典进行赋值(无序排列)
var dictionary = ["name":"doubleDragon","age":24,"gender":"male"]
增
使用下标增加键值对
dictionary["address"] = "anyWhere" dictionary["number"] = 24
删
调用removeValueForKey方法进行删除
dictionary.removeValueForKey("name")
改
1.使用键,修改固定键对应的值,若键不存在,则是添加
dictionary["number"] = 20
2.使用updateValue方法进行修改
updateValue可以进行修改和添加,当填入的键存在时就会进行数据更新,把键对应的老的值返回出来。当键不存在时,就会进行添加,返回nil
let returnValue = dictionary.updateValue(10,forKey: "number") let returnValue2 = dictionary.updateValue(30,forKey: "class")
查(遍历字典)
for (key,value) in dictionary { println("key = \(key),value = \(value)") }
字典初始化的方法也有两种
使用字典初始化方式创建的是固定键值类型的字典
1.
var initDictionary:[String:String] = [String:String]()
2.
var initDictionary2:Dictionary<String,String> = Dictionary()
控制流
for循环
1.for-in循环
for value in 1...10 { println("value = \(value)") }
当我们不需要使用区间的值时,可以使用_告知系统
for _ in 1...10 { println("good") }
2.for循环
for var index = 0; index < 10; index++ { println("index = \(index)") }
while循环
var whileNumber = 0 while whileNumber < 10 { println("whileNumber = \(whileNumber)") whileNumber++ }
do-while循环
do { println("执行一次") } while(false)
if-else语句
var aValue = 20 if aValue <= 21 { println("aValue <= 21") } else { println("aValue > 21") }
switch-case语句
1.在swift中,是没有贯穿的,只会执行满足条件的语句,不用加break也不会贯穿
2.每一个case分支中都必须有一个语句,假如真不想写,可以加break,通过编译
3.swift中,case可以加多个条件
4.若想贯穿可以加fallthrough
var switchNumber = 10 switch switchNumber { case 10,3,2,8: println("10") fallthrough case 11: println("11") case 12: break case 13: println("13") default : println("other") }
5.swift中,switch-case可以进行值的绑定
var (x,y) = (10,0) switch (x,y) { case (let xValue,0): println(xValue) case (10,let yValue): println(yValue) default: println("others") }
6.swift中,switch-case可以进行区间匹配
var domainNumber = 50 switch domainNumber { case 0...10: println("哈哈") case 11...100: println("嘿嘿") case 101...10000: println("哼哼") default: println("others") }
控制流中,我们会遇到的关键字:break,continue,fall through
break在循环当中,跟c语言的语法规则一样,用来结束整个循环
continue在循环中,跟c语言的语法规则一样,用来结束本次循环
标签语句
当我们遇到多个循环嵌套的时候,我们根据需求,想要关掉某个循环,此时我们就要使用标签语句,用来区别不同的循环。标签语句的定义语法:name:写到想要标识的循环前面.
ayang: while true { for var labelNumber = 0; labelNumber < 100; labelNumber++ { if labelNumber == 5 { break ayang } println("labelNumber = \(labelNumber)") } }