Swift入坑系列—集合類型

來源:互聯網
上載者:User

標籤:eval   最大   行儲存   arrays   moved   code   []   class   select   

  • 數組(Arrays)
  • 字典(Dictionaries)
數組(Arrays)

在OC裡面,NSArray和NSMutableArray這兩個類可以儲存任意類型的對象,並且不提供所返回對象的任何特別資訊。
在Swift中,資料值被存入某個數組之前類型必須明確。方法是通過顯式的類型標註或者類型推斷,而且不是必須是class類型。

//定義了一個儲存 字串類型 的可變數組(‘var‘欄位修飾)var shoppingList: [String] = ["Eggs", "Milk"]//定義了一個儲存 字串類型 的不可變數組(‘let‘欄位修飾)let peopleList: [String] = ["Danny", "Mike", "Johnnie"]

Note:
當然你也可以省略類型標註,因為Swift可以根據你的內容推斷出正確的類型,如下面的代碼。

var shoppingList = ["Eggs", "Milk"]
建立並構造數組
//建立一個整型空數組var array1 = [Int]()//建立一個特定大小,並且所有資料都為預設的整型數組var array2 = [Int](count: 3, repeatedValue:1)//建立一個特定大小,並且資料類型為預設的推斷為浮點型的數組var array3 = [](count: 3, repeatedValue:2.5)
數組的增刪改查
  1. 增(插入資料)

    Swift中往數組裡面插入資料有多種方式:
    1)append()方法

    shoppingList.append("Flour")

    2)insert(atIndex:)方法

    shoppingList.insert("Maple Syrup", atIndex: 0)

    3)+=賦值運算子

    shoppingList += ["Baking Powder"]
  2. 刪(刪除資料)

    通過removeAtIndex()方法移除指定位置的資料項目。這個方法把數組在特定索引值中儲存的資料項目移除並且返回這個被移除的資料項目(返回的資料項目如果不用的時候可以無視):

    let mapleSyrup = shoppingList.removeAtIndex(0)

    通過removeLast()方法可以移除最後一項資料項目

    let apples = shoppingList.removeLast()
  3. 改(更新資料)

    //通過指定某一項更新資料項目shoppingList[0] = "Six eggs"//通過區間更新區間內資料項目shoppingList[4...6] = ["Bananas", "Apples"]

    Note:
    我們不能使用下標文法在數組尾部添加新項。如果我們試著用這種方法對索引越界的資料進行檢索或者設定新值的操作,我們會引發一個運行期錯誤。我們可以使用索引值和數組的count屬性進行比較來在使用某個索引之前先檢驗是否有效。除了當count等於 0 時(說明這是個空數組),最大索引值一直是count - 1,因為數組都是零起索引

  4. 查(訪問資料)

    //擷取第0項資料並賦值給變數firstItemvar firstItem = shoppingList[0]//擷取某個區間的資料項目並賦值給另外一個數值let tempArr = shoppingList[1...2]
數組的遍曆

通過for-in迴圈遍曆數組中的資料項目:
【方式一】

let array = ["Danny", "Johnnie", "Mike"]//遍曆數組資料項目for item in array {    print(item)}
控制台列印:DannyJohnnieMike

【方式二】

let array = ["Danny", "Johnnie", "Mike"]//遍曆數組資料項目for (idx, value) in array.enumerate() {    print("idx:\(idx)  value:\(value)")}
控制台列印:idx:0  value:Dannyidx:1  value:Johnnieidx:2  value:Mike
字典(Dictionaries)建立字典字面量

OC裡面,字典字面量的格式是:@{@"key" : @"value"},而Swift裡面,字典字面量以及數組字面量均使用中括弧[]包住。格式為:[key 1: value 1, key 2: value 2, key 3: value 3]

//建立一個var airports: [String:String] = ["TYO": "Tokyo", "DUB": "Dublin"]
//建立一個鍵為String,值為Int的空字典var dic1 = Dictionary<String, Int>()
字典的增刪改查
  1. 增(插入資料)
    在字典中使用下標文法來添加新的資料項目。可以使用一個合適類型的 key 作為下標索引,並且分配新的合適類型的值:

    airports["LHR"] = "London"
  2. 刪(刪除資料)

    通過removeValueForKey()方法在字典中移除索引值對。這個方法在索引值對存在的情況下會移除該索引值對並且返回被移除的value或者在沒有值的情況下返回nil

    //通過索引值“DUB”移除對應的值let removedValue = airports.removeValueForKey("DUB")
  3. 改(更新資料)
    通過使用下標文法來改變特定鍵對應的值:

    //使用下標文法來改變特定鍵對應的值airports["LHR"] = "London Heathrow"

    也可以通過updateValue(forKey:)方法設定或者更新特定鍵對應的值。這個方法還會返回更新值之前的原值或者nil,方便我們檢查更新是否成功:

    //通過“DUB”鍵將舊值更新為“Dublin Internation”let oldValue = airports.updateValue("Dublin Internation", forKey: "DUB")
  4. 查(訪問資料)
    使用下標文法來在字典中檢索特定鍵對應的值。由於使用一個沒有值的鍵這種情況是有可能發生的,可選類型返回這個鍵存在的相關值,否則就返回nil

    if let airportName = airports["DUB"] {    print("DUB鍵對應的值為: \(airportName).")} else {    print("DUB鍵沒有對應的值")}
    控制台列印:DUB鍵對應的值為: Dublin Internation.
    字典的遍曆

【方式一】
通過for-in迴圈遍曆某個字典中的索引值對。每一個字典中的資料項目都由(key, value)元組形式返回,並且我們可以使用臨時常量或者變數來分解這些元組:

//遍曆字典對應的索引值對for (key, value) in airports {    print("\(key): \(value)")}
控制台列印:TYO: TokyoLHR: London Heathrow

【方式二】
我們也可以通過訪問它的keys或者values屬性檢索一個字典所有的鍵、值:

//遍曆字典所有鍵for key in airports.keys {    print("該字典的鍵:\(key)")}//遍曆字典所有值for value in airports.values {    print("該字典的值:\(value)")}
控制台列印:該字典的鍵:LHR該字典的鍵:TYO該字典的值:London Heathrow該字典的值:Tokyo

Note:
當你想要將字典的鍵、值分別存起來的話,可以使用數組的APIArray()進行儲存

//將字典的所有鍵存進keys數組中let keys = Array(airports.keys)//將字典的所有值存進values數組中let values = Array(airports.values)

Swift入坑系列—集合類型

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.