標籤:
http://blog.csdn.net/kuloveyouwei/article/details/36005299
Swift 提供兩種集合類型來儲存集合,數組和字典。數組是一個同類型的序列化列表集合。字典是一個能夠使用類似於鍵的唯一識別碼來擷取值的非序列化集合。在Swift中,數組和字典的鍵和值都必須明確它的類型。這意味這數組和字典不會插入一個錯誤的類型的值,以致於出錯。這也意味著當你在數組和字典中取回數值的時候能夠確定它的類型。Swift 使用確定的集合類型可以保證代碼工作是不會出錯,和讓你在開發階段就能更早的捕獲錯誤。
1、數組
Swift數組是儲存確定的值,這個Objective-C中的NSArray和NSMutableArray類是有區別的。因為它們是儲存各種的對象,而且並不提供返回任何有關對象的具體資訊。在Swift中,無論是確定的聲明,還是隱式的聲明,數組是非常確定它自身是儲存什麼樣的類型,而且,它並不一定要求儲存的是類對象。所以Swift數組是型別安全的,因為它一直都確定它自身所能包含的值。
[objc] view plaincopy
- //初始化數組
- let array1:String[]=["a","b"];
-
- //數組是被定義為一個變數(使用var 標識符)而不是常量(使用let 標識符)
- var array2:String[]=["aa","bb"];
-
- //初始化一個空數組
- var array3=String[]();
-
- //Swift數群組類型也提供初始化方法來建立確定長度和提供預設數值的數組。你可以通過這個初始化方法增加一個新的數組,元素的數量成為count,合適的預設值為repeatedValue
- var array4=Int[](count:3,repeatedValue:0);
-
- //array2可變數組,可以添加元素
- array2.append("cc");
- //還可以通過+=操作符添加元素
- // array2+="cc";
-
- println(array2);
-
- /*
- *列印結果
- *[aa, bb, cc]
- */
-
- //通過下標法的索引取值
- var yuansu1=array2[0];
-
- println(yuansu1);
- /*
- *列印結果
- *aa
- */
-
- //還可以修改一個範圍內的值
- array2[1...2]=["ee","ff"];
- println(array2);
- /*
- *列印結果
- *[aa, ee, ff]
- */
-
- //在數組某個位置插入元素
- array2.insert("oo",atIndex:0);
- println(array2);
- /*
- *列印結果
- *[oo,aa, ee, ff]
- */
-
- //刪除某個位置上的元素
- array2.removeAtIndex(0);
- println(array2);
- /*
- *列印結果
- *[aa, ee, ff]
- */
-
- //移除數組最後一個元素
- var lastyuansu=array2.removeLast();
-
- //遍曆數組
- for item in array2
- {
-
-
- println(item);
-
-
- }
2、字典
Swift字典時儲存一個類型的具體的鍵和值,和Objective-C的NSDictionary 和NSMutableDictionary由一定的區別,因為它們是使用各種的對象來作為它們的鍵和值,而且並不提供任何有關對象的具體資訊。在Swift中,對於一個特定的字典,它所能儲存的鍵和值都是確定的,無論是明確聲明的類型還是隱式推斷的類型。Swift的字典寫法是Dictionary<KeyType,ValueType>,KeyType是你想要儲存的鍵,ValueType是你想要儲存的值。唯一的限制就是KeyType必須是可雜湊的(hashable)——就是提供一個形式讓它們自身是獨立識別的。Swift的所有基礎類型(例如字串(String),整形(Int),雙精確度(Double)和布爾(Bool))在預設是可雜湊的(hashable),和這些類型都常常用語當作字典的鍵。枚舉成員值不需要協助值(associated values)(具體描述在 Enumerations)也是因為它們預設也是可雜湊的(hashable)。
[objc] view plaincopy
- //初始化一個字典
- let dict1:Dictionary<String,String>=["Name":"yu","Age":"26"];
- //和數組一樣,如果你初始化一個字典的時候使用相同的類型,你可以不指明字典的類型。
- var dict2:Dictionary<String,String>=["Name2":"yu","Age2":"26"];
- //建立一個空字典
- var dict3=Dictionary<String,String>();
- //下標法,當沒有這個key的時候,是新增一個元素
- dict2["Sex"]="nan";
- /*
- *列印結果
- *[Name2: yu, Age2: 26, Sex: nan]
- */
- //修改
- dict2["Sex"]="n";
-
- println(dict2);
- /*
- *列印結果
- *[Name2: yu, Age2: 26, Sex: n]
- */
-
- //同樣, 使用字典的updateValue(forKey:) 方法去設定或者更新一個特定鍵的值 . 和上面的下標例子一樣, updateValue(forKey:) 方法如果鍵不存在則會設定它的值,如果鍵存在則會更新它的值, 和下標不一樣是, updateValue(forKey:) 方法 如果更新時,會返回原來舊的值rThis enables you to 可以使用這個來判斷是否發生了更新。
- if let oldValue = dict2.updateValue("wang", forKey: "Name2")
- {
-
-
- println(dict2);
-
- }
- /*
- *列印結果
- *[Name2: wang, Age2: 26, Sex: n]
- */
-
- //通過下標法取值
- if let value = dict2["Age2"]
- {
- println(value);
-
- } else
- {
- println("no exsit")
- }
-
- //你可以使用下標文法把他的值分配為nil,來移除這個索引值對
- dict2["Sex"]=nil;
- println(dict2);
- /*
- *列印結果
- *[Name2: yu, Age2: 26]
- */
-
- //同樣,從一個字典中移除一個索引值對可以使用removeValueForKey方法,這個方法如果存在鍵所對應的值,則移除一個索引值對,並返回被移除的值,否則返回nil。
- if let removedValue = dict2.removeValueForKey("Age2")
- {
- println(dict2);
-
- } else
- {
- println(dict2);
- }
-
- //遍曆字典
- for(key,value) in dict2
- {
-
- println("\(key):\(value)");
-
-
- }
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
Swift學習三