Всем привет, это моё первое сообщение сюда поэтому прошу не закидывать чем тут закидывают если что )
Вопрос банально прост - получение и запись данных Firebase. Всё было просто до момента работы с сущностью array и map
Имею следующую структуру данных в Firebase
имею вот такую модель:
struct CityList: Codable, Hashable {
var id: String = UUID().uuidString
var name: String
var latitude: String
var longitude: String
enum CodingKeys: String, CodingKey {
case name
case latitude
case longitude
}
}
struct Cities: Codable, Identifiable {
var id: String = UUID().uuidString
var citiesList: [CityList]
}
И дальше самое интересное - пробую получить данные:
class WeatherList: ObservableObject {
@Published var cities = [CityList]()
func fetchCities(userInfo: UserInfo) {
self.cities.removeAll()
let db = Firestore.firestore()
.collection("cities")
.document(userInfo.user.uid)
db.getDocument() { (document, error) in
if let document = document, document.exists {
guard let itemIDs = document.get("citiesList")
else {
return
}
for i in itemIDs {
print(i.value)
}
} else { return }
}
}
}
Вопрос - каким правильным способом мне получить данные массива словарей из Firebase?
И следующий вопрос - добавлять данные как? Вернее делать апдейт массива - просто добавить данные получается, но updateData и setData по сути просто перезаписывают массив. а не аппендят
PS вариант №2
db.getDocument() { doc, error in
if error == nil {
let dataDoc = doc?.data()?.values
print(dataDoc)
}
}
выводит
Optional(Dictionary.Values([<__NSArrayM 0x600002b967f0>(
{
latitude = 12345;
longitude = 67890;
name = LA;
}
)
]))
а отладка на привет выводит следующее
dataDoc [String : Any].Values? some
_variant [String : Any]._Variant
object _BridgeStorage<__RawDictionaryStorage>
rawValue _DictionaryStorage<String, Any> 1 key/value pair 0x0000600003c51970
[0] (key: String, value: Any)
key String “citiesList”
_guts _StringGuts
value AnyObject
object NSMutableArray 1 element 0x0000600000584f90
[0] __NSDictionaryM * 3 key/value pairs 0x0000600000b88820
[0] (null) “name” : “LA”
[1] (null) “longitude” : “67890”
[2] (null) “latitude” : “12345”
как это счастье получить ума не приложу - второй день бьюсь - прошу помощи