數組分成兩種,一種是由常變量let的不可改變的數組,另一種是由變量var的改變的數組
常量(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)}字典的概念和定義 (key:value)
字典的改變 數組名[“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"] = nilprint (dic)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)新聞熱點
疑難解答