It is always morning somewhere in the world. =======》》 世界上總有個地方是有陽光的。線上app 因為ipv6 ?給拒回來了 ? 弄了一會 耽誤半天······催植。
集合類型 (Collection Types)
Swift 語言提供Arrays肮蛹、Sets和Dictionaries三種基本的 合類型用來存儲 合數(shù)據(jù)。數(shù)組(Arrays)是有序數(shù)據(jù)的 创南。 合(Sets)是無序無重復數(shù)據(jù)的 伦忠。字典(Dictionaries)是無序的鍵值對的 。
Swift 語言中的Arrays稿辙、Sets和Dictionaries中存儲的數(shù)據(jù)值類型必須明確昆码。這意味著我們不能把不正確的數(shù)據(jù)類型插入其中。
數(shù)組(Arrays) ======>>>>>>>>>
創(chuàng)建一個空數(shù)組
var someInts = [Int]() ? // 數(shù)組里面的類型就會被腿短為Int 類型 (創(chuàng)建一個指定數(shù)據(jù)類型構(gòu)成的空數(shù)組)
數(shù)組添加元素
someInts.append(3)
創(chuàng)建一個帶有默認值的數(shù)組
var anotherThreeDoubles = Array(repeating: 2.5, count: 3)
會被推斷為 Double 類型 等同于 [2.5,2.5,2.5,]
可以使用數(shù)組的readOnly屬性 count來獲取數(shù)組中的數(shù)據(jù)項數(shù)量:
anotherThreeDoubles.count
同時 也可以使用isEmpty? 來判斷count 是不是0 ? 不用去像OC 的 ?array.count == 0
if anotherThreeDoubles.isEmpty {} else {}
為數(shù)組添加元素
append
除此之外,使用加法賦值運算符(+=)也可以直接在數(shù)組后面添加一個或多個擁有相同類型的數(shù)據(jù)項:
array += ["Baking Powder"]
當然了 也可以通過下標去取出數(shù)組中的元素 ?array[0] 邻储、赋咽、 、吨娜、脓匿、// 數(shù)組里的第一個元素
同時也可以利用下標去改變數(shù)組總的元素 ?array[ 0 ] = "changeVaule"
注意:!!!!!
不可以用下標訪問的形式去在數(shù)組尾部添加新項。
調(diào)用數(shù)組的insert(_:at:)方法來在某個具體索引值之前添加數(shù)據(jù)項:
array.insert("Maple Syrup", at: 0)
// "Maple Syrup" 現(xiàn)在是這個列表中的第一項
remove(at:)同理 insert
當我們想remove 最后一項的時候 不用remove(at:)? 而是 removeLast()
let arrayTwo = array.removeLast()
數(shù)組的遍歷
swift ?我們可以使用for in 遍歷
for item? in arrayTwo { print ( item )? }
集合 (Sets) ?=======>>>>>>>>>>
集合(Set)用來存儲相同類型并且沒有確定順序的值萌壳。當 合元素順序不重要時或者希望確保每個元素只出現(xiàn)一次時可以使用 合而不是數(shù)組亦镶。
注意:Swift的Set類型被橋接到Foundation中的NSSet類。
關(guān)于使用Foundation和Cocoa中Set的知識,參見Using Swift with Cocoa and Obejective-C(Swift3.0.1)中使用 Cocoa 數(shù)據(jù)類型部分
創(chuàng)建一空的集合
var letters = Set<Character>()
插入一個數(shù)字
letters.insert("a")
創(chuàng)建一個指定類型(string)的的集合
var favoriteGenres: Set<String>?= ["Rock", "Classical", "Hip hop"] ?//但是由于 ?swift 有推斷功能 所以我們還可以這樣寫
var favoriteGenres: Set = ["Rock", "Classical", "Hip hop"] ? //省事多了
添加和刪除 ?跟數(shù)組差不多
使用contains(_:)方法去檢查Set中是否包含一個特定的值:
if favoriteGenres.contains("Funk") {
print("I get up on the good foot.")
} else {
print("It's too funky in here.")
}
// 打印 "It's too funky in here."
?可以for in ?遍歷一個set ?
通過集合的 sorted屬性 ?會返回給你一個有序的數(shù)組了
for genre in favoriteGenres.sorted() {
print(genre)
}
? 使用symmetricDifference(_:)方法根據(jù)在一個 合中但不在兩個 合中的值創(chuàng)建一個新的集合袱瓮。
? 使用union(_:)方法根據(jù)兩個 合的值創(chuàng)建一個新的集合缤骨。
? 使用subtracting(_:)方法根據(jù)不在該 合中的值創(chuàng)建一個新的集合。
使用“是否相等”運算符(==)來判斷兩個 合是否包含全部相同的值尺借。
使用isSubset(of:)方法來判斷一個 合中的值是否也被包含在另外一個 合中绊起。
使用isSuperset(of:)方法來判斷一個 合中包含另一個 合中所有的值。
使用isStrictSubset(of:)或者isStrictSuperset(of:)方法來判斷一個 合是否是另外一個 合的子 合或
者父 合并且兩個 合并不相等燎斩。
使用isDisjoint(with:)方法來判斷兩個 合是否不含有相同的值(是否沒有交 )虱歪。
基本就這么多 一般來說 這玩意 也用不到
字典(Dictionary)
這個不用解釋了 ? 每個值(value)都有一個對應(yīng)是鍵(key)跟查字典一樣?
注意:Swift 的Dictionary類型被橋接到Foundation的NSDictionary類蜂绎。
我們可以像數(shù)組一樣使用構(gòu)造語法創(chuàng)建一個擁有確定類型的空字典:
創(chuàng)建字典?
var namesOfIntegers =Int: String ? ?/// ?Int 類型的空字典
namesOfIntegers[16] = "sixteen" ? ?////現(xiàn)在包含一個鍵值對
namesOfIntegers = [:] ? ? ? ? ? ? ? ? ? ? ?/// 又成為了一個 [Int: String] 類型的空字典
let dic ?= ["name" : "HanShaun" , "age": "25","sex" : "man" ];
指定類型的字典
let dic : [string : string] = ["name" : "HanShaun" , "age": "25","sex" : "man" ];
判空同數(shù)組
更改?
dic["name"] = "Tom" ? ?現(xiàn)在name ?所對應(yīng)的value 就是"Tom" 了
遍歷字典 ? ?通過for in ?Key ?Value ?來遍歷
let dic:[String : Array] = ["BR": ["1","2","3"], "GH": ["1","2","3"], "JP":? ["1","2","3"]]
?for (key , value) in dic { ? ? ? ??
? ?print(key)
? }
通過訪問 或者 屬性,我們也可以遍歷字典的鍵或者值
for key in dic.keys{
print (key)
}
Swift 的字典類型是無序 合類型。為了以特定的順序遍歷字典的鍵或值,可以對字典的 或 屬性使用sorted() 方法笋鄙。