Working in Swift..
I'm trying to call .setData(from: ) to write a Codable struct to a document in the cloud firestore database as outlined in the Firebase docs here to:
https://firebase.google.com/docs/firestore/manage-data/add-data#custom_objects
However, I'm getting the error: "Argument labels '(from:)' do not match any available overloads"
The odd thing is I was able to build and run on the simulator once, and successfully posted a document, but now obviously the compiler is calling this error and causing the build to fail. relevant code below:
the line that is causing the build to fail:
do {
try collectionRef.document(lensSet.id.uuidString).setData(from: lensSet)
} catch let error {
print(error)
}
The Codable Struct:
struct LensSet: Codable, Identifiable {
var id: UUID
// Coding KEYS
private enum CodingKeys: String, CodingKey {
case id
}
}
It seems like the function they are saying to call in the docs maybe doesn't exist? Any help appreciated!
The documentation isn't exactly wrong, it's just incomplete in one section.
EDIT: for TL;DR
See the guide from Peter Friese: Mapping Firestore Data in Swift
For the longer explanation
Firebase added an extension to make crafting custom obects easier but didn't mention that extension in the documentation. (I assume its an extension)
The documentation on Custom Objects is an example of the code that needs the extension
Simple fix by adding this to your podfile
pod 'FirebaseFirestoreSwift'
and then do a pod update either in terminal or cocoapods.
Then in your Class just update the imports to include that
import Cocoa
import FirebaseCore
import FirebaseFirestore
import FirebaseFirestoreSwift
For reference the code in the docs was this
try db.collection("cities").document("LA").setData(from: city)
and this
let docRef = db.collection("cities").document("LA")
docRef.getDocument { (document, error) in
let result = Result {
try document.flatMap {
try $0.data(as: City.self)
}
}
and this line
.data(as: City.self)
and
.setData(from:
were the 'troublemakers' that needed the FirebaseFirestoreSwift
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With