Ключом к Firebase является всегда думать о родительских и дочерних узлах как пары ключ: значение.Ключи всегда являются строками, но значения могут быть строками, числами, логическими значениями и массивами.
В этом случае вы в значительной степени поняли все правильно, просто нужно считать массив самим значением.
Давайте определим этот массив с двумя элементами (каждый элемент является словарем)
let myArray = [
["prediction": "pred 0",
"predictionRatio": "2"],
["preduction": "pred 1",
"predictionRatio": "3"]
]
, затем давайте создадим объект словаря, который содержит пары ключ: значение, и запишем все это в firebase.
let dict:[String: Any] = [
"code": "1111",
"date": "04/11/2018",
"description": "Description",
"predictions": myArray
]
, а затем запишите его в ссылку, созданную с помощью .childByAutoId
let ref = self.ref.child("some_node").childByAutoId()
ref.setValue(dict)
, а результаты в some_node будут выглядеть следующим образом
child_by_auto_id_0
code: "1111"
date: "04/11/2018"
description: "some description"
predictions:
0:
"prediction": "pred 0"
"predictionRate": "2"
1:
"prediction": "pred 1"
"predictionRate": "3"
Обратите внимание, что я сказалсловарь, который будет получать пары ключ: значение String: Any.Ключи, как упоминалось выше, всегда являются строками, но в этом случае некоторые значения являются строками, а затем одним является массив.Любой тип обрабатывает это.
При этом, как правило, лучше всего избегать массивов в Firebase.С ними сложно работать, их нелегко обслуживать, и они хорошо выполняют запросы ... им просто не нравится, когда их запрашивают.Было бы лучше генерировать ключи для массива, используя тот же метод .childByAutoId.Это гораздо более гибко.
predictions:
auto_id_0:
"prediction": "pred 0"
"predictionRate": "2"
auto_id_1:
"prediction": "pred 1"
"predictionRate": "3"
В этой заметке вы можете рассмотреть возможность денормализации вашего узла предсказаний, если вы все захотите запросить их
child_by_auto_id_0
code: "1111"
date: "04/11/2018"
description: "some description"
predictions
auto_id_0:
"prediction": "pred 0"
"predictionRate": "2"
"parent_node_ref": "child_by_auto_id_0"
auto_id_1:
"prediction": "pred 1"
"predictionRate": "3"
"parent_node_ref": "child_by_auto_id_0"