Я использую базу данных Firebase Realtime, использую кодируемый подход в быстрой и внешней библиотеке CodableFirebase. Я создал структуру модели, но когда я пытаюсь проанализировать значения (поскольку я получаю все значения) со структурой модели, это дает мне ноль. В моей базе данных есть ключи, которые могут быть неправильно обработаны во вложенных значениях. Пожалуйста помоги. Спасибо
прикреплен снимок структуры базы данных.
Код:
Database.database().reference().child("users").observeSingleEvent(of: .value, with: { (snapshot) in
guard let value = snapshot.value as? [String: Any] else { return }
do {
let friendList = try FirebaseDecoder().decode(Response.self, from: value)
guard let conversationUid = value["conversationUid"] as? String,
let friendStatus = value["friendStatus"] as? String,
let notify = value["notify"] as? Bool,
let phNumber = value["phoneNumber"] as? String,
let uid = value["uid"] as? String
else { return }
} catch let error {
print(error)
}
})
JSON:
{
"FTgzbZ9uWBTkiZK9kqLZaAIhEDv1" : {
"friends" : {
"zzV6DQSXUyUkPHgENDbEjXVBj2" : {
"conversationUid" : "-L_w2yi8gh49GppDP3r5",
"friendStatus" : "STATUS_ACCEPTED",
"notify" : true,
"phoneNumber" : "+9053",
"uid" : "zzV6DQSXUyUkPHgEZ9EjXVBj2"
}
},
"lastLocation" : {
"batteryStatus" : 22,
"latitude" : 48.90537,
"longitude" : 28.042,
"timeStamp" : 1556568633477,
"uid" : "FTgzbZ9uWkiZK9kqLZaAIhEDv1"
},
"profile" : {
"fcmToken" : "fp09-Y9ZAkQ:APA91bFgGBsyFx0rtrz7roxzpE_MmuSaMc4is-XIu7j718qjRVCSHY4PvbNjL1LZ-iytaeDKviIRMH",
"name" : "Mt Bt",
"phoneNumber" : "+90503",
"uid" : "FTgzbZ9uWBTkiZLZaAIhEDv1"
}
}
Модель:
struct Response : Codable {
let friends : Friend?
let lastLocation : LastLocation?
let profile : Profile?
}
struct Friend: Codable {
let converstionUid: String?
let friendStatus: String?
let notify: Bool?
let phoneNumber: String?
let uid: String?
}
struct Profile : Codable {
let fcmToken : String?
let name : String?
let phoneNumber : String?
let uid : String?
}
struct LastLocation : Codable {
let batteryStatus : Int?
let latitude : Float?
let longitude : Float?
let timeStamp : Int?
let uid : String?
}