为了将数据存储到我的 firebase 中,我使用以下代码:
class NewEventDate {
private let firebase = FIRDatabase.database().reference().child("eventDates")
let eventDictionary: NSMutableDictionary
init (date: String, free: String, club: String) {
eventDictionary = NSMutableDictionary(objects: [date, free, club], forKeys: ["date", "free", "club"])
}
func saveEventDate(backendlessUserObjectID: String, item: NSMutableDictionary) {
let reference = firebase.child(backendlessUserObjectID)
reference.setValue(item) { (error, ref) -> Void in
if error != nil {
SpeedLog.print("\(error)")
}
}
}
}
调用者:
func saveDatesLoop() {
for date in calendarView.selectedDates {
saveDateToFirebase(formatter.stringFromDate(date), free: "true", club: "11er")
}
}
func saveDateToFirebase(date: String, free: String, club: String) {
var newEvent = NewEventDate?()
newEvent = NewEventDate(date: date, free: free, club: club)
newEvent?.saveEventDate(backendless.userService.currentUser.objectId, item: newEvent!.eventDictionary)
}
我希望 free
和 club
是可选的,所以我可以将它们设置为 nil
,如下所示:
saveDateToFirebase(formatter.stringFromDate(date),免费:nil,club:nil)
实现这一点的最佳实践是什么?非常感谢您的帮助。
PS:free:“true”,club:“11er”
已硬编码以进行测试。
PPS:我尝试设置init(date:String,free:String?,club:String?)
,但Xcode强制我稍后解开它们...
最佳答案
我可以通过一些解决方法将它们设为可选(以便能够将它们设置为零):
init (date: String, free: String?, club: String?, eventText: String?) {
var localFree = ""
var localClub = ""
var localEventText = ""
if let tempFree = free {
localFree = tempFree
}
if let tempClub = club {
localClub = tempClub
}
if let tempEventText = eventText {
localEventText = tempEventText
}
eventDictionary = NSMutableDictionary(objects: [date, localFree, localClub, localEventText], forKeys: ["date", "free", "club", "eventText"])
}
现在我可以这样调用它:
func saveDateToFirebase(date: String, free: String?, club: String?, eventText: String?) {
var newEvent = NewEventDate?()
newEvent = NewEventDate(date: date, free: free, club: club, eventText: eventText)
newEvent?.saveEventDate(backendless.userService.currentUser.objectId, date: date, item: newEvent!.eventDictionary)
}
如果我也想的话,最后让它们nil
:
saveDateToFirebase(NSDate(), free: nil, club: nil, eventText: nil)
关于ios - Swift/NSMutableDisctionary init/如何使值可选,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39625413/