Swift: Как мне создать массив словарей, где каждый словарь содержит массив внутри них?
Я пытаюсь загрузить некоторые данные из моего plist в массив. Объявляя массив, я сделал что-то вроде этого
var natureList : [Dictionary] = [] as! [Dictionary]
Итак, как мне объявить массив для загрузки этих данных из моего plist.? Я знаю, это просто, но эта маленькая штука ест мою голову. Любая помощь приветствуется.
2 ответа
Это должно быть объявлено следующим образом:
var natureList = [[String: Any]]()
или, как советовал @ Leo Dabus (спасибо ему):
var natureList: [[String: Any]] = []
Значит это natureList
это массив словарей строк в качестве ключей и любых в качестве значений.
Если вы хотите объявить это, используя Dictionary
-Что такое uanessacry-, вы также можете сделать это так:
var natureList = [Dictionary<String, Any>]()
У Ахмада Ф. есть правильный ответ, но на всякий случай вам (или будущему читателю) нужно быть более конкретным в какой-то момент здесь, как это разбить на супер специфический тип…
Большинство внутренних элементов в списке (Сводка: 1-й цветок и т. Д.) Все [String: String]
потому что ключ является строкой, и поэтому является связанным значением.
Все эти внутренние словари хранятся в массивах, поэтому мы добавляем дополнительный набор скобок вокруг нашего предыдущего типа: [[String : String]]
,
При повышении уровня все эти массивы находятся в словаре, что означает, что мы добавляем тип ключа, двоеточие и скобки: [String: [[String : String]]]
Словари из предыдущего шага все содержатся в массиве, что означает, что мы добавляем еще один набор скобок снаружи, оставляя нас с: [[String: [[String : String]]]]
,
Опять же, этот уровень детализации, вероятно, излишний, но он полезен для демонстрации одного способа разрушения сложной структуры данных, начиная с самого внутреннего уровня и заканчивая своим выходом. Есть и другие способы разрушения такой структуры, но эта очень эффективна.