如何在 Swift 中向字典新增元素?


Swift 有多種方法可以向字典新增元素。

我們將使用以下方法在 Swift 語言中向字典新增元素:

  • 使用 updateValue() 方法新增元素

  • 使用下標語法新增元素。

  • 使用 merging() 方法新增元素。

使用 updateValue() 方法

Swift 中的 updateValue( :forKey:) 方法用於更新現有鍵的值或向現有字典新增新的鍵值對。如果鍵之前不存在於字典中,則該方法將返回 nil 而不是鍵的先前值,以下是一個示例:

示例

import Foundation
var userInfo: [String: Any] = ["firstName": "Alex",
   "school": "St. Primary School",
   "score": 8.8,
   "age": 16]
print("Original User Info: \(userInfo)")

// Adding new key-value pairs
userInfo.updateValue("USA", forKey: "country")
userInfo.updateValue("Murphy", forKey: "lastName")
userInfo.updateValue("Martin Murphy", forKey: "fatherName")
print("Updated User Info: \(userInfo)")

輸出

Original User Info: ["firstName": "Alex", "age": 16, "school": "St. Primary School", "score": 8.8]
Updated User Info: ["fatherName": "Martin Murphy", "age": 16, "score": 8.8, "lastName": "Murphy", "firstName": "Alex", "school": "St. Primary School", "country": "USA"]

使用下標語法

或者,您可以使用下標語法為新的或現有的鍵賦值。以下是一個示例。

示例

import Foundation
var userInfo: [String: Any] = ["firstName": "Alex",
   "school": "St. Primary School",
   "score": 8.8,
   "age": 16]
print("Original User Info: \(userInfo)")

// Adding new key-value pairs
userInfo["country"] = "USA"
userInfo["lastName"] = "Murphy"
userInfo["fatherName"] = "Martin Murphy"
print("Updated User Info: \(userInfo)")

輸出

Original User Info: ["age": 16, "school": "St. Primary School", "firstName": "Alex", "score": 8.8]
Updated User Info: ["firstName": "Alex", "fatherName": "Martin Murphy", "country": "USA", "score": 8.8, "age": 16, "school": "St. Primary School", "lastName": "Murphy"]

使用 merging() 方法

您還可以使用 Dictionary 的 .merging(_:uniquingKeysWith:) 方法向字典新增元素。

merging(_:uniquingKeysWith:) 是 Swift 中 Dictionary 型別上的一個方法,它允許您將一個字典的內容合併到另一個字典中,並指定如何處理重複的鍵。

該方法接受兩個引數

  • 第一個引數是要合併到當前字典中的字典。

  • 第二個引數是一個閉包,它接受同一個鍵的兩個值並返回您想要保留的值。

示例

以下是一個演示如何使用 merging(_:uniquingKeysWith:) 方法的示例:

import Foundation
var userInfo: [String: Any] = ["firstName": "Alex",
   "school": "St. Primary School",
   "score": 8.8,
   "age": 16]
print("Original User Info: \(userInfo)")
// creating a new dictionary with other info
let otherInfo: [String: Any] = ["country": "USA",
   "lastName": "Murphy",
   "fatherName": "Martin Murphy",
   "pincode": 6783456]
userInfo = userInfo.merging(otherInfo, uniquingKeysWith: { current, _ in
   return current
})
print("Updated User Info: \(userInfo)")

輸出

Original User Info: ["school": "St. Primary School", "score": 8.8, "age": 16, "firstName": "Alex"]
Updated User Info: ["firstName": "Alex", "pincode": 6783456, "country": "USA", "lastName": "Murphy", "school": "St. Primary School", "age": 16, "fatherName": "Martin Murphy", "score": 8.8]

如果鍵已存在,它將把 otherInfo 與 userInfo 合併並使用當前值。為了處理重複的鍵,您可以透過其他方式使用 merging( :uniquingKeysWith:) 函式,例如保留當前字典的值或合併值等。

注意 - 此方法不會修改原始字典,它只返回一個新字典

結論

有不同的方法,例如 updateValue()、merging() 和使用下標語法。所有方法都可以在不同的情況下使用。

大多數情況下,我們使用下標語法向字典新增元素。在 Swift 中,字典非常強大,可以處理重複鍵。為了管理重複鍵,您可以使用上述示例中提供的方法之一。

更新於: 2023年2月28日

4K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告