如何在swift中将元素追加到字典中?

时间:2014-12-05 09:59:45

标签: swift nsdictionary

我有简单的词典,定义如下:

var dict : NSDictionary = [ 1 : "abc", 2 : "cde"]

但后来我想在这个字典中添加一些元素3 : "efg"

但我不知道我怎么能在互联网上搜索很多这个动作,但没有什么可以帮助我。

有人能告诉我如何将3 : "efg"添加到现有字典中?

19 个答案:

答案 0 :(得分:196)

您正在使用NSDictionary。除非你出于某种原因明确要求它是那种类型,否则我建议使用Swift词典。

您可以将Swift词典传递给期望NSDictionary的任何函数而无需任何额外工作,因为Dictionary<>NSDictionary可以无缝地相互桥接。原生Swift方式的优点是字典使用泛型类型,因此如果您使用Int作为键并使用String作为值来定义它,则不能错误地使用不同类型的键和值。 (编译器代表您检查类型。)

根据我在代码中看到的内容,您的词典使用Int作为键,String作为值。要创建实例并在以后添加项目,您可以使用以下代码:

var dict = [1: "abc", 2: "cde"] // dict is of type Dictionary<Int, String>
dict[3] = "efg"

如果您以后需要将其分配给NSDictionary类型的变量,只需进行显式转换:

let nsDict = dict as! NSDictionary

并且,如前所述,如果您想将其传递给期望NSDictionary的函数,请按原样传递它,而不进行任何强制转换或转换。

答案 1 :(得分:91)

您可以使用以下方式添加,并将Dictionary更改为NSMutableDictionary

dict["key"] = "value"

答案 2 :(得分:59)

我知道这可能会很晚,但它可能对某人有用。 因此,要将键值对添加到swift中的字典,可以使用 updateValue(value:,forKey:)方法,如下所示:

var dict = [ 1 : "abc", 2 : "cde"]
dict.updateValue("efg", forKey: 3)
print(dict)

答案 3 :(得分:39)

SWIFT 3 - XCODE 8.1

var dictionary =  [Int:String]() 

dictionary.updateValue(value: "Hola", forKey: 1)
dictionary.updateValue(value: "Hello", forKey: 2)
dictionary.updateValue(value: "Aloha", forKey: 3)

所以,你的词典包含:

字典[1:Hola,2:你好,3:Aloha]

答案 4 :(得分:16)

Swift 3 +

为Dictionary分配新值的示例。您需要将其声明为NSMutableDictionary:

Promises

答案 5 :(得分:16)

如果你的词典是IntString,你可以做到:

dict[3] = "efg"

如果您的意思是在字典的中添加元素,可能是一个解决方案:

var dict = Dictionary<String, Array<Int>>()

dict["key"]! += [1]
dict["key"]!.append(1)
dict["key"]?.append(1)

答案 6 :(得分:12)

在Swift中,如果您使用 NSDictionary ,则可以使用setValue

dict.setValue("value", forKey: "key")

答案 7 :(得分:10)

给出两个词典如下:

var dic1 = ["a": 1, "c": 2]
var dic2 = ["e": 3, "f": 4]

以下是如何将 dic2 中的所有项目添加到 dic1

dic2.map {
   dic1[$0.0] = $0.1
}

干杯 甲

答案 8 :(得分:7)

Dict.updateValue从字典更新现有密钥的值,或者如果密钥不存在则添加新的新键值对。

实施例 -

var caseStatusParams: [String: AnyObject] = ["userId" : UserDefault.userID ]
caseStatusParams.updateValue("Hello" as AnyObject, forKey: "otherNotes")

结果 -

▿  : 2 elements
    - key : "userId"
    - value : 866
▿  : 2 elements
    - key : "otherNotes"
    - value : "Hello"

答案 9 :(得分:7)

For whoever reading this for swift 5.1+

  // 1. Using updateValue to update the given key or add new if doesn't exist


    var dictionary = [Int:String]()    
    dictionary.updateValue("egf", forKey: 3)



 // 2. Using a dictionary[key]

    var dictionary = [Int:String]()    
    dictionary[key] = "value"



 // 3. Using subscript and mutating append for the value

    var dictionary = [Int:[String]]()

    dictionary[key, default: ["val"]].append("value")

答案 10 :(得分:5)

对于使用[String:Any]而不是下面的Dictionary的伙伴来说,扩展名是

extension Dictionary where Key == String, Value == Any {

    mutating func append(anotherDict:[String:Any]) {
        for (key, value) in anotherDict {
            self.updateValue(value, forKey: key)
        }
    }
}

附加愉快!

答案 11 :(得分:2)

var dict = ["name": "Samira", "surname": "Sami"]
// Add a new enter code herekey with a value
dict["email"] = "sample@email.com"
print(dict)

答案 12 :(得分:2)

没有将数据追加到字典中的功能。您只需在现有字典中为新键分配值即可。它将自动为字典添加值。

var param  = ["Name":"Aloha","user" : "Aloha 2"]
param["questions"] = "Are you mine?"
print(param)

输出将类似于

[“名称”:“ Aloha”,“用户”:“ Aloha 2”,“问题”:“”你是我的吗?“]

答案 13 :(得分:0)

添加刚刚设置的新元素:

  

listParrameters [“您的参数”] =值

答案 14 :(得分:0)

从Swift 5开始,以下代码集合起作用。

     // main dict to start with
     var myDict : Dictionary = [ 1 : "abc", 2 : "cde"]

     // dict(s) to be added to main dict
     let myDictToMergeWith : Dictionary = [ 5 : "l m n"]
     let myDictUpdated : Dictionary = [ 5 : "lmn"]
     let myDictToBeMapped : Dictionary = [ 6 : "opq"]

     myDict[3]="fgh"
     myDict.updateValue("ijk", forKey: 4)

     myDict.merge(myDictToMergeWith){(current, _) in current}
     print(myDict)

     myDict.merge(myDictUpdated){(_, new) in new}
     print(myDict)

     myDictToBeMapped.map {
         myDict[$0.0] = $0.1
     }
     print(myDict)

希望这也有帮助

答案 15 :(得分:0)

我添加了词典扩展名

extension Dictionary {   
  func cloneWith(_ dict: [Key: Value]) -> [Key: Value] {
    var result = self
    dict.forEach { key, value in result[key] = value }
    return result  
  }
}

您可以像这样使用cloneWith

 newDictionary = dict.reduce([3 : "efg"]) { r, e in r.cloneWith(e) }

答案 16 :(得分:0)

快速5开心编码

var tempDicData = NSMutableDictionary()

for temp in answerList {
    tempDicData.setValue("your value", forKey: "your key")
}

答案 17 :(得分:0)

要将新的键值对附加到字典中,您只需设置键的值。例如。

// Initialize the Dictionary
var dict = ["name": "John", "surname": "Doe"]
 
// Add a new key with a value

dict["email"] = "john.doe@email.com"

print(dict)

输出 -> ["surname": "Doe", "name": "John", "email": "john.doe@email.com"]

答案 18 :(得分:-9)

如果你想修改或更新NSDictionary那么 首先将它命名为NSMutableDictionary

let newdictionary = NSDictionary as NSMutableDictionary

然后只需使用

 newdictionary.setValue(value: AnyObject?, forKey: String)