如何在swift中将元素添加到字典中?
我有简单的字典,这是定义如下:
var dict : NSDictionary = [ 1 : "abc", 2 : "cde"]
但是后来我想添加一些元素到这个字典中,这个元素是3 : "efg"
但我不知道如何执行这个行动,我在互联网上search了很多,但没有什么可以帮助我。
有谁可以告诉我如何追加3 : "efg"
到这个现有的字典?
你正在使用NSDictionary
。 除非你明确地需要这种types,我build议使用Swift字典。
你可以传递一个Swift字典给期待NSDictionary
任何函数,而不需要额外的工作,因为Dictionary<>
和NSDictionary
无缝桥接。 本地Swift方法的优点是字典使用通用types,所以如果用Int
作为键和String
作为值来定义它,则不能错误地使用不同types的键和值。 (编译器代表您检查types。)
根据我在代码中看到的内容,您的字典使用Int
作为键和String
作为值。 要创build一个实例并在稍后添加一个项目,您可以使用以下代码:
var dict = [1: "abc", 2: "cde"] // dict is of type Dictionary<Int, String> dict[3] = "efg"
如果以后需要将它分配给一个NSDictionary
types的variables,只需做一个明确的转换:
let nsDict = dict as! NSDictionary
而且,正如前面提到的,如果你想把它传递给期望NSDictionary
的函数,就不需要进行任何转换或者转换。
您可以使用以下方法添加并将Dictionary
更改为NSMutableDictionary
dict["key"] = "value"
我知道这可能会很晚,但可能对某人有用。 因此,要将键值对附加到字典中,可以使用updateValue(value:,forKey:)方法,如下所示:
var dict = [ 1 : "abc", 2 : "cde"] dict.updateValue("efg", forKey: 3) print(dict)
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:阿罗哈]
如果你的字典是Int
到String
你可以简单地做:
dict[3] = "efg"
如果你的意思是增加元素的价值的字典可能的解决scheme:
var dict = Dictionary<String, Array<Int>>() dict["key"]! += [1] dict["key"]!.append(1) dict["key"]?.append(1)
在Swift中,如果你使用NSDictionary ,你可以使用setValue
:
dict.setValue("value", forKey: "key")
给出两个字典如下:
var dic1 = ["a": 1, "c": 2] var dic2 = ["e": 3, "f": 4]
这里是如何添加从dic2到dic1的所有项目:
dic2.map { dic1[$0.0] = $0.1 }
干杯A.
Swift 3+
将新值分配给Dictionary的示例 你需要声明它为NSMutableDictionary:
var myDictionary: NSMutableDictionary = [:] let newValue = 1 myDictionary["newKey"] = newValue print(myDictionary)
var dict = ["name": "Samira", "surname": "Sami"] // Add a new enter code herekey with a value dict["email"] = "sample@email.com" print(dict)
直到现在,我发现通过使用Swift的高级函数之一(即“减less”)将数据附加到字典中的最佳方式。 按照以下代码片段:
newDictionary = oldDictionary.reduce(*newDictionary*) { r, e in var r = r; r[e.0] = e.1; return r }
@ Dharmesh在你的情况,这将是,
newDictionary = dict.reduce([3 : "efg"]) { r, e in var r = r; r[e.0] = e.1; return r }
如果您在使用上述语法时发现任何问题,请让我知道。
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"
您可以使用另一个testing程序类来设置字典值
variableValue["X"] = 3.14
在上面的variableValue
是由另一个类创build的字典。 您设定key:value
。
如果你想修改或更新NSDictionary,那么首先将它转换为NSMutableDictionary
**let newdictionary = NSDictionary as NSMutableDictionary**
那么只需使用newdictionary.setValue(value:AnyObject ?, forKey:String)