Как добавить элементы в словарь в swift?
у меня есть простой словарь, который определяется как :
var dict : NSDictionary = [ 1 : "abc", 2 : "cde"]
но позже я хочу добавить некоторый элемент в этот словарь, который является 3 : "efg"
но я понятия не имею, как я могу выполнить это действие я искал много в интернете, но ничего не помогает мне.
может кто-нибудь сказать мне, как я могу добавить 3 : "efg" в этот существующий словарь?
13 ответов:
вы используете
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, передать его как есть, без приведения или преобразования.
вы можете добавить, используя следующий способ и изменить
DictionarytoNSMutableDictionarydict["key"] = "value"
Я знаю, что это может прийти очень поздно, но это может оказаться полезным кому-то. Поэтому для добавления пар значений ключей в словари в swift вы можете использовать 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: Hello, 3: Aloha]
если ваш словарь
Intдо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 до 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"] = "[email protected]" 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)
Comments