#arrays #swift #firebase #firebase-realtime-database #nsdictionary
# #массивы #swift #firebase #firebase-база данных в реальном времени #nsdictionary
Вопрос:
Я запускаю программу Xcode 8 / Swift 3, извлекающую данные из базы данных firebase. Я добавляю «Бренды» в деталь «Магазин».
Вот как выглядят данные:
Я могу получить доступ ко всем «корневым» данным, таким как местоположение и магистраль, используя следующий код.
let storeName = value["StoreName"] as! String
let subThouroughfare = value["subThouroughfare"] as! String
let thouroughfare = value["Thouroughfare"] as! String
let administrativeArea = value["administrativeArea"] as! String
Я не уверен, как получить доступ к встроенным данным, и в конечном итоге будет более одного «фирменного» ключа с 4 значениями, структурированными как таковые:
$StoreKey:
brands:
$brandKey1:
Value1: String
Value2: String
Value3: String
Value4: String
$brandKey2:
Value1: String
etc...
Пока что у меня есть настройка структуры следующим образом, и мне нужно будет запросить бренд из части бренда таблицы:
var ProductList = [storeStruct]()
struct BrandStruct{
let BrandKey: String
let BrandName: String
let Value1: String
let Value2: String
let Value3: String
let Value4: String
}
Каков наилучший способ получить эти данные и структурировать их в полезный массив, чтобы я мог заполнить таблицу? Или я должен продолжать пытаться запрашивать Firebase, пока не получу что-то, что смогу использовать?
Спасибо за помощь!
Комментарии:
1. Я не уверен, как глубже погрузиться в словарь. Прямо сейчас я извлекаю данные из первого уровня словаря, но я не уверен, как получить ключ и значения бренда.
2. Реструктурируйте и переформулируйте свой вопрос в соответствии с вашим фактическим запросом, ваш вопрос неясен, удалите ненужные детали и включите вашу фактическую структуру JSON
3. Хорошо, я думаю, я понял вопрос. Посмотрите, полезен ли вам мой ответ.
Ответ №1:
Начните с выборки let brands = value["brands"] as! NSDictionary
, полностью параллельной тому, что вы уже делаете. Теперь запросите brands.allKeys
; это массив ключей бренда. Затем для каждого ключа вы можете запросить brands[thisKey] as! NSDictionary
, и вы получите обратно словарь, содержащий четыре значения с ключами "Val1"
, "Val2"
, "Val3"
, и "Val4"
. (Опять же, если имена и количество этих ключей могут меняться, allKeys
я расскажу вам, что это такое.)
Комментарии:
1. Хорошо, я вижу, к чему вы клоните, и, похоже, я добиваюсь прогресса. Спасибо за вашу помощь. Как только я закончу программирование своего блока, я дам вам знать.
2. Отлично, спасибо. Я старался сделать это как можно проще; в реальной жизни я бы использовал
[String:Any]
вместо NSDictionary , а затем использовалkeys
бы для получения ключей, но в данном случае это не имеет большого значения.3. Это сработало. Я смог извлечь все значения и добавить их в массив. Спасибо.