如何在swift中将数组映射到字典中的键?
问题描述:
我想创建一个带有键的字典作为日期&事件数组。日期可以有多个事件,所以我想将一个日期作为字典的关键字映射到字符串数组。我将动态日期可以没有事件或一个日期可以有多个事件。我从日期数组中获取数据,我需要将它与事件映射。如何在swift中将数组映射到字典中的键?
我曾尝试下面的代码:
func addEventToDictionary(eventModal:CalenderEventModal,date:Date) {
var key:String = self.dateFormatter().string(from: date)
if let val = dict_events[key] {
} else {
dict_events[key] = [Any]()
}
dict_events[key] = eventModal
}
这里事件模式是事件的对象。
答
假设dict_events
是一个声明类型为[String: [Any]]
的字典,那么我相信你所缺少的是追加到这个数组而不是分配它。字典的值部分是可选的,所以您需要将该值附加到非可选数组中,然后将其分配回字典的key
。此外,如果您知道只存储CalenderEventModal
对象,则可以将dict_events
的类型更改为。为您的代码的修复程序是这样的:
var dict_events: [String: [CalenderEventModal]] = [:]
func addEventToDictionary(eventModal: CalenderEventModal, date: Date) {
var key: String = self.dateFormatter().string(from: date)
if var val = dict_events[key] {
val.append(eventModal)
dict_events[key] = val
} else {
let events = [CalenderEventModal]()
events.append(eventModal)
dict_events[key] = events
}
}
你试过这个代码,所以什么结果你得到了什么,你预期的那样? –
让你的dict_events = [String:[CalenderEventModal]]? – koropok
'if let val = dict_events [key] {val.insert(eventModal) }' –