【发布时间】:2020-01-05 00:42:34
【问题描述】:
我有一组警报(如您将在下面看到的警报类型),我正在尝试从 Cloud Firestore 存储和读取这些警报。我可以上传警报数组,但无法读取/解码它。当我使用下面的代码时,它会崩溃,因为我尝试解码带有错误的 alarmArray:
致命错误:“试试!”表达式意外引发错误:Swift.DecodingError.typeMismatch(Swift.Dictionary, Swift.DecodingError.Context(codingPath: [], debugDescription: "Not a dictionary", underlyingError: nil))
保存数据功能:
static func saveData(alarmArray: [Alarm]) {
let db = Firestore.firestore()
let firebaseAlarms = try! FirebaseEncoder().encode(alarmArray)
db.collection(K.FStore.alarmCollection).addDocument(data: [
K.FStore.userAlarms : firebaseAlarms
]) { (error) in
if let e = error {
print("Error saving: \(e)")
} else {
print("Successfully Saved")
}
}
}
加载数据函数:
static func loadData() -> [Alarm] {
let db = Firestore.firestore()
var alarmArray: [Alarm] = []
db.collection(K.FStore.alarmCollection).getDocuments { (querySnapshot, error) in
if let e = error {
print("error retrieving from Firestore, \(e)")
} else {
if let snapshotDocuments = querySnapshot?.documents {
for firebaseAlarms in snapshotDocuments {
alarmArray = try! FirebaseDecoder().decode(Alarm.self, from: firebaseAlarms) //the app crashes here!
}
}
}
}
return alarmArray
}
报警型号:
struct Alarm: Codable {
var uuid: String
var time: Time
var label: String
var repeatStatus: [DetailInfo.DaysOfWeek]
var isOn: Bool
var onSnooze: Bool
}
我正在使用 CodableFirebase pod 的文档 here 和 Firebase 的文档 here,但很难将它们组合在一起。
【问题讨论】:
标签: arrays swift firebase google-cloud-firestore