iOS開發-swift基礎學習三

swift中文文檔gitbooks地址:https://numbbbbb.gitbooks.io/-the-swift-programming-language-/content/

Swift 提供兩種集合類型來存儲集合,數組和字典。數組是一個同類型的序列化列表集合。字典是一個能夠使用類似於鍵的唯一標識符來獲取值的非序列化集合。在Swift中,數組和字典的鍵和值都必須明確它的類型。這意味這數組和字典不會插入一個錯誤的類型的值,以致於出錯。這也意味着當你在數組和字典中取回數值的時候能夠確定它的類型。Swift 使用確定的集合類型可以保證代碼工作是不會出錯,和讓你在開發階段就能更早的捕獲錯誤。

1、數組

Swift數組是儲存確定的值,這個Objective-C中的NSArray和NSMutableArray類是有區別的。因爲它們是儲存各種的對象,而且並不提供返回任何有關對象的具體信息。在Swift中,無論是確定的聲明,還是隱式的聲明,數組是非常確定它自身是儲存什麼樣的類型,而且,它並不一定要求儲存的是類對象。所以Swift數組是類型安全的,因爲它一直都確定它自身所能包含的值。

[objc] view plain copy
  1. //初始化數組  
  2. let array1:String[]=["a","b"];  
  3.   
  4. //數組是被定義爲一個變量(使用var 標識符)而不是常量(使用let 標識符)  
  5. var array2:String[]=["aa","bb"];  
  6.   
  7. //初始化一個空數組  
  8. var array3=String[]();  
  9.   
  10. //Swift數組類型也提供初始化方法來創建確定長度和提供默認數值的數組。你可以通過這個初始化方法增加一個新的數組,元素的數量成爲count,合適的默認值爲repeatedValue  
  11. var array4=Int[](count:3,repeatedValue:0);  
  12.   
  13. //array2可變數組,可以添加元素  
  14. array2.append("cc");  
  15. //還可以通過+=操作符添加元素  
  16. // array2+="cc";  
  17.   
  18. println(array2);  
  19.   
  20. /* 
  21. *打印結果 
  22. *[aa, bb, cc] 
  23. */  
  24.   
  25. //通過下標法的索引取值  
  26. var yuansu1=array2[0];  
  27.   
  28. println(yuansu1);  
  29. /* 
  30. *打印結果 
  31. *aa 
  32. */  
  33.   
  34. //還可以修改一個範圍內的值  
  35. array2[1...2]=["ee","ff"];  
  36. println(array2);  
  37. /* 
  38. *打印結果 
  39. *[aa, ee, ff] 
  40. */  
  41.   
  42. //在數組某個位置插入元素  
  43. array2.insert("oo",atIndex:0);  
  44. println(array2);  
  45. /* 
  46. *打印結果 
  47. *[oo,aa, ee, ff] 
  48. */  
  49.   
  50. //刪除某個位置上的元素  
  51. array2.removeAtIndex(0);  
  52. println(array2);  
  53. /* 
  54. *打印結果 
  55. *[aa, ee, ff] 
  56. */  
  57.   
  58. //移除數組最後一個元素  
  59. var lastyuansu=array2.removeLast();  
  60.   
  61. //遍歷數組  
  62. for item in array2  
  63. {  
  64.   
  65.   
  66.     println(item);  
  67.       
  68.   
  69. }  

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 plain copy
  1. //初始化一個字典  
  2. let dict1:Dictionary<String,String>=["Name":"yu","Age":"26"];  
  3. //和數組一樣,如果你初始化一個字典的時候使用相同的類型,你可以不指明字典的類型。  
  4. var dict2:Dictionary<String,String>=["Name2":"yu","Age2":"26"];  
  5. //創建一個空字典  
  6. var dict3=Dictionary<String,String>();  
  7. //下標法,當沒有這個key的時候,是新增一個元素  
  8. dict2["Sex"]="nan";  
  9. /* 
  10. *打印結果 
  11. *[Name2: yu, Age2: 26, Sex: nan] 
  12. */  
  13. //修改  
  14. dict2["Sex"]="n";  
  15.   
  16. println(dict2);  
  17. /* 
  18. *打印結果 
  19. *[Name2: yu, Age2: 26, Sex: n] 
  20. */  
  21.   
  22. //同樣, 使用字典的updateValue(forKey:) 方法去設置或者更新一個特定鍵的值 . 和上面的下標例子一樣, updateValue(forKey:) 方法如果鍵不存在則會設置它的值,如果鍵存在則會更新它的值, 和下標不一樣是, updateValue(forKey:) 方法 如果更新時,會返回原來舊的值rThis enables you to 可以使用這個來判斷是否發生了更新。  
  23. if let oldValue = dict2.updateValue("wang", forKey"Name2")  
  24. {  
  25.   
  26.   
  27.     println(dict2);  
  28.       
  29. }  
  30. /* 
  31. *打印結果 
  32. *[Name2: wang, Age2: 26, Sex: n] 
  33. */  
  34.   
  35. //通過下標法取值  
  36. if let value = dict2["Age2"]  
  37. {  
  38.     println(value);  
  39.       
  40. else  
  41. {  
  42.     println("no exsit")  
  43. }  
  44.   
  45. //你可以使用下標語法把他的值分配爲nil,來移除這個鍵值對  
  46. dict2["Sex"]=nil;  
  47. println(dict2);  
  48. /* 
  49. *打印結果 
  50. *[Name2: yu, Age2: 26] 
  51. */  
  52.   
  53. //同樣,從一個字典中移除一個鍵值對可以使用removeValueForKey方法,這個方法如果存在鍵所對應的值,則移除一個鍵值對,並返回被移除的值,否則返回nil。  
  54. if let removedValue = dict2.removeValueForKey("Age2")  
  55. {  
  56.    println(dict2);  
  57.       
  58. else  
  59. {  
  60.     println(dict2);  
  61. }  
  62.   
  63. //遍歷字典  
  64. for(key,value) in dict2  
  65. {  
  66.   
  67.     println("\(key):\(value)");  
  68.       
  69.   
  70. }  
發佈了32 篇原創文章 · 獲贊 9 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章