:ここ
import Firebase
import CodableFirebase
let item: GroceryItem = // here you will create an instance of GroceryItem
let data = try! FirebaseEncoder().encode(item)
Database.database().reference().child("pathToGraceryItem").setValue(data)
そして、あなたが同じデータを読み込みます方法ですフォーマット。構造体はDecodableまたはCodableに準拠する必要があります。私はこれをSwiftyJSONでやったことがありますが、この例ではJSONSerializationを使用していますが、それでも動作します。
JSONSnapshotPotatoes {
"name": "Potatoes",
"price": 5,
}
JSONSnapshotChicken {
"name": "Chicken",
"price": 10,
"onSale": true
}
struct GroceryItem: Decodable {
var name: String
var price: Double
var onSale: Bool? //Use optionals for keys that may or may not exist
}
Database.database().reference().child("grocery_item").observeSingleEvent(of: .value, with: { (snapshot) in
guard let value = snapshot.value as? [String: Any] else { return }
do {
let jsonData = try JSONSerialization.data(withJSONObject: value, options: [])
let groceryItem = try JSONDecoder().decode(GroceryItem.self, from: jsonData)
print(groceryItem)
} catch let error {
print(error)
}
})
JSONキーがDecodable構造体と同じでない場合は、注意してください。 CodingKeysを使用する必要があります。例:
JSONSnapshotSpinach {
"title": "Spinach",
"price": 10,
"onSale": true
}
struct GroceryItem: Decodable {
var name: String
var price: Double
var onSale: Bool?
enum CodingKeys: String, CodingKey {
case name = "title"
case price
case onSale
}
}
詳細については、Appleドキュメントhereを参照してください。
FirebaseからデータをフェッチするときにJSONDecoderを使用しないでください。代わりに、Firebase APIを使用する必要があります。 –