6.1 swift中的数组集合
数组分成两种,一种是由常变量let的不可改变的数组,另一种是由变量var的改变的数组
6.2数组的声明和初始化
常量(let)数组定义
/*let + 变量名 + : + 变量类型*/
let a:[Int] = [1,2,3,4,5]
let a<Int> = [1,2,3,4,5]
let a<Any> = [1,2,"swift"] /*Any可放置任何类型*/
/*let + 变量名*/
let b = [1,2,3,4,5]
/*let + 变量名 可以放置不同数据的类型*/
let c = [1,2,"swift","swift_2"]
/*空数组表示*/
let d:[Int] = [] /*直接定义*/
let d:[Int]() /*专有语法*/
repeatedValue的使用
let d = [count:5,repeatedValue:1.0]
/*等价于*/
let d = Array(count:5,repeatedValue:1.0)
let d = [1.0,1.0,1.0,1.0,1.0]
变量(var)数组定义
/*var + 变量名 + : + 变量类型*/
var a:[Int] = [1,2,3,4,5]
var a<Int> = [1,2,3,4,5]
/*var + 变量名*/
var b = [1,2,3,4,5]
/*var + 变量名 可以放置不同数据的类型*/
var c = [1,2,"swift","swift_2"]
/*空数组表示*/
var d:[Int] = [] /*直接定义*/
var d:[Int]() /*专有语法*/
/*repeatedValue的使用*/
var d = [count:5,repeatedValue:1.0]
/*等价于*/
var d = Array(count:5,repeatedValue:1.0)
var d = [1.0,1.0,1.0,1.0,1.0]
isEmpty返回的是布尔类型(Bool) 用来判断数组是否为空集,
空集返回true,反之返回false
数组名.isEmpty
let string_1: [Int]()
print (string_1.isEmpty)
let ssring_2: [Int] = [1,2,3]
print (string_2.isEmpty)
count 计算数组的元素个数
数组名.count
var string_3: [Int] = [1,2,3,4,5]
print (string_3.count)
数组的访问,插入,增加,修改和删除和遍历元素
数组访问
var array = ["a","b","c"]
print (array[1]) /*访问第二个元素"b"*/
注意:元素排列是从0开始的
数组插入元素
数组名.append (“元素”)
var array = ["a","b","c"]
array.append ("d") /*插入一个元素d*/
print (array)
数组名.insert (“位置”, at: 元素)
var array = ["a","b","c"]
array.insert ("0",at: "swift") /*将swift插入第一个位置*/
print (array)
元素的修改
数组名[位置] = 元素
var array = ["a","b","c"]
array [0] = "swift" /*将第一个元素改为swift*/
print (array)
元素的删除
数组名.removeLast()
数组名.removeFirst()
数组名.remove(at:(位置))
var array = ["a","b","c","d"]
array.remove(at:2) /*删除第二个元素*/
print (array)
array.removeLast() /*删除最后一个元素*/
print (array)
array.removeFirst() /*删除第一个元素*/
print (array)
数组遍历
var array = ["a","b","c","d"]
for elm in array {
print (elm)
}
6.4 字典声明与初始化
字典的概念和定义 (key:value)
6.5 字典声明与初始化
var dic1 = [] /*空字典*/
var dic =["1":"苹果","2":"梨","3":"菠萝",4:"香蕉"]
print (dic2)
var dic3:[String: Int] = ["swift",1] /*元素与类型对应*/
6.6 可变字典
字典的改变
数组名[“key”] = “value”
var dic = ["1":"苹果","2":"梨","3":"菠萝","4":"香蕉"]
dic["1] = "swift"
print (dic)
updateValue对字典的改变
数组名.updateValue(“key”, forKey: “value”)
updateValue如果字典中有相同的元素,则会替换掉
如果字典中没有元素,则会增加一组元素
var dic =["1":"苹果","2":"梨","3":"菠萝",4:"香蕉"]
dic.updateValue ("dff",forKey: "2") /*对字典已有的key进行value的修改*/
print (dic)
dic.updateValue ("www",forKey: "5") /*对字典没有key进行增加*/
print (dic)
字典的删除
数组名[“key”] = nil 将字典中的value给清除掉
var dic =["1":"苹果","2":"梨","3":"菠萝",4:"香蕉"]
dic["2"] = nil
print (dic)
6.7 字典遍历
key的遍历
var dic =["1":"苹果","2":"梨","3":"菠萝",4:"香蕉"]
/*对dic中key进行输出*/
for dic in dic.keys {
print (dic)
}
value的遍历
var dic =["1":"苹果","2":"梨","3":"菠萝",4:"香蕉"]
/*对dic中value进行输出*/
for dic in dic.values {
print (dic)
}
key和value同时遍历
“`
var dic =[“1”:”苹果”,”2”:”梨”,”3”:”菠萝”,4:”香蕉”]
for (key,value) in dic {
print ((key,value))
}
for character in dic {
print (dic)
}
6.8 Swift中的Set集合
Set:集合
•集 NSSet 是一个无序对象的集合。集也有动态和静态之分,NSSet 是静态类型,成员不能被修改。NSMutableSet 是动态类型,成员可以被修改。
•集和数组不一样的是,它存储的每一个元素都是唯一的,没有完全相同的两个元素。所以数组中如果有两个相同的值,转换为集后只会有一个值。
6.9 Set声明和初始化
Set 型集合 ,不赋初值,指定数据类型为 String 型
let set1 = Set<String>()
// 不指定数据类型,自动推断
// 指定数据类型为 Int 型
let set3:Set<Int> = [1, 3, 5, 7]
6.10 可变的Set集合
var swiftSet:Set = [1, 3, 5, 7]
// 向集合中添加一个元素
swiftSet.insert(8)
// 删除第一个元素
swiftSet.removeFirst()
// 删除指定元素
swiftSet.remove(1)
// 删除所有元素
swiftSet.removeAll(keepCapacity: true)
//修改元素
let nsSet:NSMutableSet = [2, 4, 6, 8]
nsSet.setSet([1, 2, 3])
6.11 Set集合遍历
let nsSet:NSSet = [2, 4, 6, 8]
// 用闭包遍历
nsSet.enumerateObjectsUsingBlock { (obj:AnyObject, stop:UnsafeMutablePointer<ObjCBool>) in
print(obj)
}
// 用迭代遍历
let enu:NSEnumerator = nsSet.objectEnumerator()
// AnyObject 后不要加 ?,否则会导致一直循环
while let obj:AnyObject = enu.nextObject() {
print(obj)
}
// 条件遍历
let set:Set = nsSet.objectsPassingTest { (obj:AnyObject, stop:UnsafeMutablePointer<ObjCBool>) -> Bool in
return (obj as! Int) > 5 ? true : false
}
print(set)
6.12 Set 集合运算
let nsCountedSet:NSCountedSet = NSCountedSet(array: [1, 2, 3])
nsCountedSet.addObject(2)
nsCountedSet.removeObject(1)
// 检索集合中指定元素的计数值
let num1:Int = nsCountedSet.countForObject(1)
// 检索集合中指定元素的计数值
let num2:Int = nsCountedSet.countForObject(2)