Распаковка словаря из ArraySlice - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть ArraySlice<Dictionary<String, String>>, содержащий только один словарь внутри.Это выглядит следующим образом:

[["high": "4", "investpercent": "6.0", "objective": "2.0", "savings": "2.0", "expenses": "1.0", "date": "2017-09-26", "low": "2"]]

Однако я хотел манипулировать словарем с помощью индексов, что не реализовано в ArraySlice.В типичных срезах можно, согласно найденному вопросу в SO, сделать что-то вроде:

let dictionary = ["a": 1, "b": 2, "c": 3]

var smallerDictionary: [String: Int] = [:]

for (key, value) in dictionary.dropFirst() {
    smallerDictionary[key] = value
}

print(smallerDictionary) // ["a": 1, "c": 3]

, которое я пробовал и не работает в ArraySlice.

  • Как "распаковать" словарь из ArraySlice?

1 Ответ

0 голосов
/ 26 сентября 2018

Если ваш ArraySlice называется slice, используйте slice.first! или slice[slice.startIndex] для доступа к содержащемуся в словаре:

let slice: ArraySlice<[String:String]> = [["high": "4", "investpercent": "6.0", "objective": "2.0", "savings": "2.0", "expenses": "1.0", "date": "2017-09-26", "low": "2"]]

var smallerDictionary: [String: String] = [:]

for (key, value) in slice.first!.dropFirst() {
    smallerDictionary[key] = value
}

print(smallerDictionary)

Примечание: Вызов dropFirst() вкл.словарь даст вам непредсказуемые результаты, потому что словари неупорядочены .

Само собой разумеется, что вы должны убедиться, что ваш ArraySlice не пуст, прежде чем пытаться получить доступ к содержащемуся в словаре.Вы можете сделать это, явно проверив slice.count > 0, !slice.isEmpty или правильно распаковав slice.first.

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