firebase firestore 不接受来自 swift 编码 json 的我的写函数
firebase firestore not accepting my write function from swift encoded json
这是我的结构
struct CustomerDetail: Codable {
var customerID: String = ""
var firstname: String = ""
var lastname: String = ""
var age: Int = 0
var birthday: Int = 0
var country: String = ""
var pound: Bool = true
var feetboolean: Bool = true
var currentweight: Int = 0
var desiredweight: Int = 0
var sex: Bool = false
var feet: Int = 0
var inches: Int = 0
var cm: Float = 0.0
}
这是我的写函数
struct writetofirebase {
var customerdetails: CustomerDetail = CustomerDetail()
let db = Firestore.firestore()
var delegate: writefirebase?
func write(){
print(customerdetails)
do {
if let data = try? JSONEncoder().encode(customerdetails){
try db.collection("collection name").document("document name").setData(from: data)
delegate?.didSuccessfulWrite(true)
}else{
print("failed to encode")
}
} catch let error {
delegate?.didFailWithError(error)
}
}
}
这是我的错误
https://i.stack.imgur.com/cOpQK.png
这是我的 firebase 结构化数据
https://i.stack.imgur.com/cOpQK.png
错误是说它在 setData
方法中接收的数据不兼容,因此请求格式不正确。您应该通过定义自定义字典或直接传递对象来适当地更新或设置数据。
db.collection("collection name").document("document name").setData(data, merge: true)
来源:https://firebase.google.com/docs/firestore/manage-data/add-data#set_a_document
这是我的结构
struct CustomerDetail: Codable {
var customerID: String = ""
var firstname: String = ""
var lastname: String = ""
var age: Int = 0
var birthday: Int = 0
var country: String = ""
var pound: Bool = true
var feetboolean: Bool = true
var currentweight: Int = 0
var desiredweight: Int = 0
var sex: Bool = false
var feet: Int = 0
var inches: Int = 0
var cm: Float = 0.0
}
这是我的写函数
struct writetofirebase {
var customerdetails: CustomerDetail = CustomerDetail()
let db = Firestore.firestore()
var delegate: writefirebase?
func write(){
print(customerdetails)
do {
if let data = try? JSONEncoder().encode(customerdetails){
try db.collection("collection name").document("document name").setData(from: data)
delegate?.didSuccessfulWrite(true)
}else{
print("failed to encode")
}
} catch let error {
delegate?.didFailWithError(error)
}
}
}
这是我的错误
https://i.stack.imgur.com/cOpQK.png
这是我的 firebase 结构化数据
https://i.stack.imgur.com/cOpQK.png
错误是说它在 setData
方法中接收的数据不兼容,因此请求格式不正确。您应该通过定义自定义字典或直接传递对象来适当地更新或设置数据。
db.collection("collection name").document("document name").setData(data, merge: true)
来源:https://firebase.google.com/docs/firestore/manage-data/add-data#set_a_document