I'm relatively new with Firebase's new Cloud Firestore and I'm having difficulty trying to map data to/from. I've tried following documentation via Google online, but it has some issues I cannot figure out the origin of.
- When I try to cast from
[String : Any]
to my custom struct, the documentation suggested I try the following:
docRef.getDocument { (document, error) in
let result = Result {
try document.flatMap {
try $0.data(as: City.self)
}
}
switch result {
case .success(let city):
if let city = city {
print("City: \(city)")
} else {
print("Document does not exist")
}
case .failure(let error):
print("Error decoding city: \(error)")
}
}
However, this produced an error on the line $0.data(as: City.self)
with Value of type 'NSObject' has no member 'data'.
- When I try to write data as a Document to a new collection, the documentation suggests I try the following:
do {
try db.collection("cities").document("LA").setData(from: city)
} catch let error {
print("Error writing city to Firestore: \(error)")
}
But this also produces an error on the .setData(from: city)
with Argument labels '(from:)' do not match any available overloads.
Does anyone have any familiarity with this to try to provide additional clarity for casting Firestore data to custom structs? I understand my structs are intended to be codable.