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

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

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

но позже я хочу добавить некоторый элемент в этот словарь, который является 3 : "efg"

но я понятия не имею, как я могу выполнить это действие я много искал в интернете, но ничего не помогает мне.

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

13 ответов


вы используете 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

и, как упоминалось ранее, если вы хотите передать его функции, ожидающей NSDictionary, передать его как есть, без приведения или преобразования.


вы можете добавить, используя следующий способ и изменить Dictionary to NSMutableDictionary

dict["key"] = "value"

Я знаю, что это может прийти очень поздно, но это может оказаться полезным кому-то. Поэтому для добавления пар значений ключей в словари в swift вы можете использовать updateValue(значение , 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: Hello, 3: Aloha]


если ваш словарь Int to String вы можете сделать просто:

dict[3] = "efg"

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

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")

Swift 3+

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

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

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

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

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

dic2.map {
   dic1[.0] = .1
}

Ура А.


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"

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

до сих пор лучший способ, который я нашел, чтобы добавить данные в словарь, используя одну из функций более высокого порядка 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 }

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


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

variableValue["X"] = 3.14

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


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

let newdictionary = NSDictionary as NSMutableDictionary

затем просто использовать

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