日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Swift--数组和字典(二)

發布時間:2023/12/15 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Swift--数组和字典(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

字典是一個容器,它存儲多個相同類型的值。每個值都與一個唯一的密鑰,它作為一個標識符字典內的值相關聯。不像在一個數組項,在字典中的項目沒有一個指定的順序。您可以使用一本字典,當你需要查找基于其標識符值,在大致相同的方式,一個真實世界的字典來查找定義為一個特定的詞。

Swift的字典不同于Objective-C的NSDictionary中和的NSMutableDictionary類,它可以使用任何類型的對象作為其鍵和值,不提供有關這些對象的性質的任何信息。Swift,鑰匙和一個特定的字典可存儲的值類型總是明確,無論是通過顯式類型批注或通過類型推斷。

Swift的字典類型寫為Dictionary<KeyType,ValueType>,其中KeyType的是價值,可以用來作為字典的鍵的類型和值類型是值類型的字典中存儲這些密鑰。

唯一的限制是,關鍵字類型必須是可哈希的,也就是說,它必須提供一種方式,使自己唯一表示的。所有的斯威夫特的基本類型(如字符串,整數,雙精度和布爾)是哈希默認情況下,所有這些類型都可以作為字典的鍵。無關聯的值枚舉成員的值(如枚舉描述)也可哈希的默認。

您可以初始化字典與字典的文本,這也有類似的語法文字前面見過的數組。字典文字是一種簡寫方式來寫一個或多個鍵 - 值對的字典集合。

一鍵 - 值對的鍵和值的組合。在字典中的文字,在每個鍵 - 值對的鍵和值用冒號隔開。鍵 - 值對被寫為一個列表,以逗號分隔,由一對方括號括:

[key1:value1, key2: value2, key3: value3]

下面的示例創建一個字典來存儲國際機場的名字。在字典中,鍵是三個字母的國際航空運輸協會代碼和值是機場名稱:

var airports: Dictionary<String, String>= ["TYO": "Tokyo","DUB": "Dublin"]

airports字典包含兩個鍵 - 值對初始化。第一對具有“TYO”的鍵和“Tokyo”的值。第二對具有“DUB”的鍵和“Dublin”的值。
這本詞典的文字包含兩個字符串:字符串對。這符合airports變量聲明的類型(只有String鍵,只有字符串值的字典)等的字典文字的賦值是允許的,以此來初始化airports字典,兩個初始項目。

?

正如數組,你不必寫字典的類型,如果你初始化它與一個字典文字,其鍵和值具有一致的類型。機場的初始化可能已被寫入一個較短的形式,而不是在:

var airports = ["TYO": "Tokyo", "DUB":"Dublin"]

因為在字面的所有鍵都是同一類型,同樣所有的值都是相同類型的對方,Swift可以推斷詞典<String, String>,字符串是正確的類型要用于airports字典。

?

訪問和修改字典

?

可以訪問和修改一個字典,通過它的方法和屬性,或使用下標語法。正如一個數組,你可以找出項目在字典的count屬性計數來檢查個數:

println("The dictionary ofairports contains \(airports.count) items.")

// prints "The dictionary of airports contains 2 items."

您可以添加一個新的項目到與標語法字典。使用適當類型的新鍵作為下標索引,并指定相應類型的新值:

airports["LHR"] = "London"?

?// theairports dictionary now contains 3 items

你也可以改變”LHR”的值

airports["LHR"] = "London Heathrow"?

// the value for "LHR" has been changed to "LondonHeathrow"

?

使用字典的updateValue(forKey:)方法來設置或更新一個特定的鍵的值。像上面的例子標,該updateValue(forKey:)方法設置一個值,如果不存在一個鍵,或更新,如果該鍵已經存在的價值。不像一個下標,但是,updateValue(forKey:)方法執行更新后返回舊值。這使您可以檢查是否沒有更新發生。

if let oldValue = airports.updateValue("Dublin International", forKey: "DUB"){

println("The old value for DUB was \(oldValue).")

}?

// prints "The old value for DUB was Dublin."

您也可以使用下標語法來從字典為特定的鍵檢索值。因為它有可能要求對沒有存在價值的關鍵,字典的下標返回字典的值類型的可選值。如果字典包含請求的密鑰值,下標返回一個包含該鍵的現有值的可選值。否則,下標返回nil:

if let airportName = airports["DUB"]{?

?println("The name of the airport is \(airportName).")?

}else{?

?println("That airport is not in the airportsdictionary.")

}?

?//prints "The name of the airport is Dublin International."

?

您可以使用下標語法來通過該鍵的分配為零的值從字典中刪除一個鍵 - 值對:

airports["APL"] = "Apple International"?

// "Apple International" is not the real airport for APL, sodelete it

airports["APL"] = nil

// APLhas now been removed from the dictionary

?

另外,從與removeValueForKey法詞庫中刪除一個鍵 - 值對。此方法刪除的鍵值對,如果它存在,并返回被刪除的值,或者返回nil,如果存在沒有價值:

if let removedValue = airports.removeValueForKey("DUB") {

println("The removed airport'sname is \(removedValue).")

}else{

prints "The removed airport's name is Dublin International."

}?

?//prints "The removed airport's name is Dublin International."

遍歷一個字典

我們可以使用for-in來遍歷一個字典

for (airportCode, airportName)in airports {

println("\(airportCode): \(airportName)")

}

.??? ??// TYO:Tokyo

.??? ??// LHR:London Heathrow

也可以通過訪問其鍵和值檢索的字典的鍵或值的可重復的集合特性:

?

?

?for airportCode in airports.keys {

println("Airport code: \(airportCode)")

?

}

.??? ?// Airport code: TYO

.??? ?// Airport code: LHR

?for airportName in airports.values {

?

println("Airport name: \(airportName)")

?

?

}

?// Airport name: Tokyo

?//Airport name: London Heathrow

?

如果需要使用字典的鍵或值與一個API,它需要一個Array實例,初始化一個新的數組中的鍵或值屬性:

.??? let airportCodes = Array(airports.keys)

.??? ??//airportCodes is ["TYO", "LHR"]

?

.??? ??let airportNames = Array(airports.values)

.??? ??//airportNames is ["Tokyo", "London Heathrow"]

?

初始化一個字典

.??? var namesOfIntegers = Dictionary<Int, String>()

.??? ?// namesOfIntegers is an emptyDictionary<Int, String>

?

?

總結

以上是生活随笔為你收集整理的Swift--数组和字典(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。