Как добавить элементы в словарь в Swift?

У меня есть простой словарь, который определяется как:

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

Теперь я хочу добавить элемент в этот словарь: 3: "efg"

Как я могу добавить 3: "efg" в этот существующий словарь?

Ответ 1

Вы используете 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, передайте ее как есть без какого-либо преобразования или преобразования.

Ответ 2

вы можете добавить следующим образом и изменить Dictionary на NSMutableDictionary

dict["key"] = "value"

Ответ 3

Я знаю, что это может произойти очень поздно, но это может оказаться полезным для кого-то. Таким образом, для добавления пар значений ключа к словарям в swift вы можете использовать метод updateValue (value:, forKey:) следующим образом:

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

Ответ 4

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: Алоха]

Ответ 5

Если ваш словарь Int - String, вы можете сделать это просто:

dict[3] = "efg"

Если вы имеете в виду добавление элементов к значению словаря в возможное решение:

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

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

Ответ 6

Swift 3 +

Пример для назначения новых значений для словаря. Вы должны объявить его как NSMutableDictionary:

var myDictionary: NSMutableDictionary = [:]
let newValue = 1
myDictionary["newKey"] = newValue
print(myDictionary)

Ответ 7

В Swift, если вы используете NSDictionary, вы можете использовать setValue:

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

Ответ 8

Учитывая два словаря, как показано ниже:

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

Вот как вы можете добавить все элементы из dic2 в dic1:

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

Приветствия А.

Ответ 9

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"

Ответ 10

Для стипендиатов, использующих [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

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

Ответ 12

Начиная с 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)

Ответ 13

До сих пор лучшим способом я нашел добавление данных в словарь, используя одну из функций более высокого порядка Swift, т.е. "уменьшить". Следуйте ниже фрагмента кода:

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 }

Пожалуйста, дайте мне знать, если вы обнаружите какие-либо проблемы при использовании синтаксиса выше.

Ответ 14

Чтобы добавить новые элементы, просто установите:

listParrameters["your parrameter"] = value

Ответ 15

параметр var: Dictionary = [ "Username": "Ajju" ]

параметр [ "Пароль" ] = "loveyou"

parameter.updateValue( "Любовь", forKey: "LoginType" )

Ответ 16

Вы можете использовать другой класс тестера для установки значения словаря, например

variableValue["X"] = 3.14

В выше variableValue - словарь, созданный другим классом. Вы устанавливаете key:value.

Ответ 17

если вы хотите изменить или обновить NSDictionary, то прежде всего введите его как NSMutableDictionary

let newdictionary = NSDictionary as NSMutableDictionary

тогда просто используйте

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