если тип словаря [Строка: Любой], могу ли я получить значение определенного значения? - PullRequest
0 голосов
/ 27 августа 2018
let josmith = [["Name": "Joe Smith"], ["Height": 42], ["SE": "YES"], ["Guardian Name(s)": "Jim and Jan Smith"]]

Как я могу получить значение Int 42?

Ответы [ 2 ]

0 голосов
/ 27 августа 2018

Вы создали массив словарей, например [[String: Any]]. Вы сказали, что вам нужен словарь, [String: Any], поэтому создайте его следующим образом (обратите внимание, что не нужно размещать элементы на новых строках, это просто помогает удобочитаемости):

let josmith = ["Name": "Joe Smith",
               "Height": 42, 
               "SE": "YES", 
               "Guardian Name(s)": "Jim and Jan Smith"]

Тогда получите к нему доступ вот так:

if let fortyTwo = josmith["Height"] as? Int {
   // fortyTwo == 42
} else {
   // josmith did not contain "Height" or it wasn't an Int
}
0 голосов
/ 27 августа 2018

Это должно работать. Я предполагаю, что словарь в массиве всегда будет иметь только одно значение.

    let josmith = [["Name": "Joe Smith"], ["Height": 42], ["SE": "YES"], ["Guardian Name(s)": "Jim and Jan Smith"]]
    for pairs in josmith {
        guard pairs.keys.first == "Height" else {
            continue
        }
        guard let integerValue = pairs.first?.value as? Int else {
            continue
        }
        print("Your value is \(integerValue)")
    }

Результат:

Ваше значение 42

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...