我有一个简单的字典,其定义如下:
var dict : NSDictionary = [ 1 : "abc", 2 : "cde"]
现在,我想在此字典中添加一个元素: 3 : "efg"
如何添加3 : "efg"
到现有字典中?
我有一个简单的字典,其定义如下:
var dict : NSDictionary = [ 1 : "abc", 2 : "cde"]
现在,我想在此字典中添加一个元素: 3 : "efg"
如何添加3 : "efg"
到现有字典中?
Answers:
您正在使用NSDictionary
。除非出于某些原因明确需要将其设为该类型,否则我建议使用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
并且,如前所述,如果您要将其传递给Expecting函数NSDictionary
,则应按原样传递它,而无需任何强制转换或转换。
Dictionary
对象,然后NSDictionary
根据需要将其转换为结尾。精彩。谢谢。
您可以使用以下方式添加并更改Dictionary
为NSMutableDictionary
dict["key"] = "value"
Cannot assign to the result of this expression
dict["testval"] = "test"
..错误fatal error: unexpectedly found nil while unwrapping an Optional value
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:荷拉,2:你好,3:阿罗哈]
dictionary[1] = "Hola"
呢?
在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.
.forEach
代替,.map
因为我们不需要任何返回的映射数组
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"
从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)
没有将数据追加到字典中的功能。您只需在现有字典中为新键分配值即可。它将自动为字典添加值。
var param = ["Name":"Aloha","user" : "Aloha 2"]
param["questions"] = "Are you mine?"
print(param)
输出将像
[“名称”:“ Aloha”,“用户”:“ Aloha 2”,“问题”:“”你是我的吗?“”]
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")
var dict = ["name": "Samira", "surname": "Sami"]
// Add a new enter code herekey with a value
dict["email"] = "sample@email.com"
print(dict)
Swift 5快乐编码
var tempDicData = NSMutableDictionary()
for temp in answerList {
tempDicData.setValue("your value", forKey: "your key")
}
如果您想修改或更新NSDictionary,则首先将其类型转换为NSMutableDictionary
let newdictionary = NSDictionary as NSMutableDictionary
然后简单地使用
newdictionary.setValue(value: AnyObject?, forKey: String)