数组
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"]
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)")
}
}