[英]Swift / NSMutableDisctionary init / How to make value optional
To store data into my firebase I'm using the following Code: 要将数据存储到我的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)")
}
}
}
}
Called by: 致电者:
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)
}
I want free
and club
to be optional, so I can set them nil
like that: saveDateToFirebase(formatter.stringFromDate(date), free: nil, club: nil)
我希望
free
和club
是可选的,因此我可以将它们设置为nil
: saveDateToFirebase(formatter.stringFromDate(date), free: nil, club: nil)
What's the best practice to realize that? 意识到这一点的最佳实践是什么? Help is very appreciated.
非常感谢您的帮助。
PS: free: "true", club: "11er"
is hard coded to test. PS:
free: "true", club: "11er"
经过硬编码测试。
PPS: I've tried to set init (date: String, free: String?, club: String?)
, but Xcode forces me to unwrap them later on... PPS:我已经尝试设置
init (date: String, free: String?, club: String?)
,但是Xcode迫使我稍后对其进行解包...
I was able to make them optional (to be able to put them nil) with a little workaround: 我可以通过一些解决方法使它们成为可选的(可以将它们设置为零):
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"])
}
Now I can call it like this: 现在,我可以这样称呼它:
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)
}
And finally make them nil
if I want too: 最后,如果我也想让它们
nil
:
saveDateToFirebase(NSDate(), free: nil, club: nil, eventText: nil)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.