Array不同于NSArray,swift中数组成员类型是指定的,下面是其用法举例
var shoppingList: String[] = ["Eggs","Milk"] //声明和初始化,可简写如下:
var shoppingList = ["Eggs","Milk"] //因为初始值已经指定了类型为String数组
println("shopping list contains \(shoppingList.count) items") //count方法返回成员个数
if shoppingList.isEmpty {
println("shopping list is empty")
} //isEmpty方法返回数组是否为空
shoppingList.append("Flour") //添加一个成员
shoppingList += "Baking Powder" //添加成员的另一个方法
shoppingList += ["Chocolate","cheese","Butter"] //一次添加多个成员
var firstItem = shoppingList[0] //取出第一个成员的值
shoppingList[0] = "Six eggs" //修改第一个成员的值
shoppingList[4...6] = ["Bananas","Apples"] //修改下标为4到6个的三成员的值为两个值,数组个数减一个
//不能使用下标给数组添加一个值,即下标的值必须小于数组成员的个数
shoppingList.insert("Maple Syrup",atIndex: 0) //在0位置插入元素,新插入的元素下标为0,即0以后的元素位置后移
let mapleSyrup = shoppingList.removeAtIndex(0) //移除0位置的元素,并返回移除元素的值(可忽略)
let apples = shoppingList.removeLast() //移除最后一个元素,当然也可使用removeAtIndex方法
for item in shoppingList {
println(item)
} //迭代数组
for (index,value) in enumerate(shoppingList) {
println("Item \(index+1) : \(value)")
} //enumerate是全局方法,转换数组的每个元素为一个元组tuple
var someInts = Int[]() //创建空的数组方法
someInts.append(4)
someInts = [] //添加一个元素后,又赋值为空
var threeDoubles = Double[](repeats: 3,repeateValue: 0.0) //数组为[0.0,0.0,0.0]
var anotherThreeDoubles = Array(repeats: 3,repeateValue: 2.5) //省略数据类型的写法
var sixDoubles = threeDoubles+anotherThreeDoubles //两个数组连接,形成6个元素的数组
var shoppingList: String[] = ["Eggs","Milk"] //声明和初始化,可简写如下:
var shoppingList = ["Eggs","Milk"] //因为初始值已经指定了类型为String数组
println("shopping list contains \(shoppingList.count) items") //count方法返回成员个数
if shoppingList.isEmpty {
println("shopping list is empty")
} //isEmpty方法返回数组是否为空
shoppingList.append("Flour") //添加一个成员
shoppingList += "Baking Powder" //添加成员的另一个方法
shoppingList += ["Chocolate","cheese","Butter"] //一次添加多个成员
var firstItem = shoppingList[0] //取出第一个成员的值
shoppingList[0] = "Six eggs" //修改第一个成员的值
shoppingList[4...6] = ["Bananas","Apples"] //修改下标为4到6个的三成员的值为两个值,数组个数减一个
//不能使用下标给数组添加一个值,即下标的值必须小于数组成员的个数
shoppingList.insert("Maple Syrup",atIndex: 0) //在0位置插入元素,新插入的元素下标为0,即0以后的元素位置后移
let mapleSyrup = shoppingList.removeAtIndex(0) //移除0位置的元素,并返回移除元素的值(可忽略)
let apples = shoppingList.removeLast() //移除最后一个元素,当然也可使用removeAtIndex方法
for item in shoppingList {
println(item)
} //迭代数组
for (index,value) in enumerate(shoppingList) {
println("Item \(index+1) : \(value)")
} //enumerate是全局方法,转换数组的每个元素为一个元组tuple
var someInts = Int[]() //创建空的数组方法
someInts.append(4)
someInts = [] //添加一个元素后,又赋值为空
var threeDoubles = Double[](repeats: 3,repeateValue: 0.0) //数组为[0.0,0.0,0.0]
var anotherThreeDoubles = Array(repeats: 3,repeateValue: 2.5) //省略数据类型的写法
var sixDoubles = threeDoubles+anotherThreeDoubles //两个数组连接,形成6个元素的数组
字典Dictionary,无序,有唯一的key,并且key和value的类型也都是指定的。key必须是可唯一识别的
//声明和初始化
var airports: Dictionary<String,String> = ["TYO":"Tokyo","DUB":"Dublin"]
//有初始值的情况下可省略类型指定
var airports = ["TYO":"Tokyo","DUB":"Dublin"]
//获得字典成员个数
airports.count
//增加一个成员可直接使用下标
airports["LHR"] = "London"
//使用下标修改成员的值,此方法如果没有下标的key值则增加一个成员,如果有则修改这个成员的值
airports["LHT"] = "London Heathrow"
//updateValue(forKey:)方法也可实现添加和更新成员的功能,并且该返回一个可选变量,为该元素旧值或者nil
if let oldValue = airports.updateValue("Dublin International",forKey: "DUB") {
println("The old value for DUB was \(oldValue)")
}
//下标法也会返回一个可选变量
if let airportName = airport["DUB"] {
println("The name of airport is \(airportNmae)")
}else{
println("The airport not in the dictionary")
}
//下标法可以移除一个元素
airports["APL"] = "Apple International"
airports["APL"] = nil
//removeValueForKey方法也可删除一个元素,并且返回可选变量,为删除的元素value或者nil,与updateValue类似
//遍历字典
for (airportCode,airportName) in airports {
println("\(airportCode):\(airportName)")
}
//单独遍历key或者value使用airports.keys 和 airports.values方法
//使用Array方法可创造一个数组
let airportCodes = Array(airports.keys)
//创建一个空的字典
var namesOfIntegers = Dictionary<int,Sting>()
//置空一个字典
namesOfIntegers[16] = "sixteen"
namesOfIntegers = [:]
//声明和初始化
var airports: Dictionary<String,String> = ["TYO":"Tokyo","DUB":"Dublin"]
//有初始值的情况下可省略类型指定
var airports = ["TYO":"Tokyo","DUB":"Dublin"]
//获得字典成员个数
airports.count
//增加一个成员可直接使用下标
airports["LHR"] = "London"
//使用下标修改成员的值,此方法如果没有下标的key值则增加一个成员,如果有则修改这个成员的值
airports["LHT"] = "London Heathrow"
//updateValue(forKey:)方法也可实现添加和更新成员的功能,并且该返回一个可选变量,为该元素旧值或者nil
if let oldValue = airports.updateValue("Dublin International",forKey: "DUB") {
println("The old value for DUB was \(oldValue)")
}
//下标法也会返回一个可选变量
if let airportName = airport["DUB"] {
println("The name of airport is \(airportNmae)")
}else{
println("The airport not in the dictionary")
}
//下标法可以移除一个元素
airports["APL"] = "Apple International"
airports["APL"] = nil
//removeValueForKey方法也可删除一个元素,并且返回可选变量,为删除的元素value或者nil,与updateValue类似
//遍历字典
for (airportCode,airportName) in airports {
println("\(airportCode):\(airportName)")
}
//单独遍历key或者value使用airports.keys 和 airports.values方法
//使用Array方法可创造一个数组
let airportCodes = Array(airports.keys)
//创建一个空的字典
var namesOfIntegers = Dictionary<int,Sting>()
//置空一个字典
namesOfIntegers[16] = "sixteen"
namesOfIntegers = [:]
Array和Dictionary如果被声明为常量(let),则其大小是不可改变的
常量Dictionary的大小不可改变,其key对应的值也不可改变,但是Array的大小虽然不能改变,但是其成员的值是可以改变的