我有一个结构 EventDate
并且正在尝试更新 Firebase 中的引用。
struct EventDate {
var club: String = ""
var date: String = ""
var eventText: String = ""
var free: String = ""
var monthYear: String = ""
}
我的更新函数抛出 lldb
。我猜是因为 keys
不是 Strings(?)
func updateEvent(_ backendlessUserObjectID: String, event: EventDate) {
let reference = firebase.child("eventDates").child(backendlessUserObjectID).child(event.date)
reference.setValue(event) { (error, ref) -> Void in
if error != nil {
print("\(error)")
}
} // lldb here
}
如果我将函数更改为以下内容,一切都很好(因为 Keys
和 Values
现在是字符串?)
func updateEvent(_ backendlessUserObjectID: String, event: EventDate) {
let item: NSMutableDictionary = ["club" : event.club,
"date" : event.date,
"eventText" : event.eventText,
"free" : event.free,
"monthYear" : event.monthYear]
let reference = firebase.child("eventDates").child(backendlessUserObjectID).child(event.date)
reference.setValue(item) { (error, ref) -> Void in
if error != nil {
print("\(error)")
}
}
}
我收到 lldb
是因为我模型中的 keys
不是字符串吗?或者我遗漏了什么,如何在不创建 NSMutableDictionary
的情况下使用我的模型将值保存到我的 Firebase 中?非常感谢您的帮助。
PS: print(event.date)
= 201610120200000000
-> .child
的期望值
最佳答案
Firebase 数据以 JSON 格式存在,可以将其视为键值对。键必须是字符串,值可以是 Dravidians 答案中提到的任何数据类型(这是一个正确的答案,应该被接受)。我想添加一些可能也有帮助的额外评论。
有时您想要在代码中使用一个结构,而该结构不能直接写入 Firebase - 您需要某种方法将数据从结构中提取到 Firebase 喜欢的东西 - 这是一个字典。
这是一个例子(Swift 3,Firebase 2.x)
struct EventDate {
var club: String = ""
var date: String = ""
var eventText: String = ""
var free: String = ""
var monthYear: String = ""
func getDict() -> [String:String] {
let dict = ["club": self.club,
"date": self.date,
"eventText": self.eventText,
"free": self.free,
"monthYear": self.monthYear
]
return dict
}
}
var event = EventDate()
event.club = "Wimbledon"
event.date = "20161023"
event.eventText = "Special Tennis Event"
event.free = "Free"
event.monthYear = "10/2016"
let ref = self.myRootRef.child(byAppendingPath: "events")!
let eventRef = ref.childByAutoId() //Firebase 2.x
eventRef?.setValue( event.getDict() )
这导致一个节点被写入 Firebase,如下所示
"events" : {
"-KUli8oiM_KKw8GZ0MMm" : {
"club" : "Wimbeldon",
"date" : "20161023",
"eventText" : "Special Tennis Event",
"free" : "Free",
"monthYear" : "10/2016"
}
}
关于ios - 如何使用结构更新 Firebase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40199216/