如何在swift中将数组映射到字典中的键?

时间:2016-12-06 06:41:18

标签: ios arrays swift dictionary

我想创建一个带有键的字典作为日期&事件数组。日期可以有多个事件所以我想将一个日期作为字典的键映射到字符串数组。我将是动态的,日期可以没有事件或日期可以有多个事件。我从中获取数据我需要用事件映射它的日期数组。

我试过下面的代码:

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
}

此处事件模态是事件对象。

1 个答案:

答案 0 :(得分:0)

假设dict_events是一个声明类型为[String: [Any]]的字典,那么我相信你所遗漏的所有内容都会附加到这个数组而不是分配它。字典的值部分是可选的,因此您需要将值附加到非可选数组,然后将其分配回字典“key”。另外,如果您知道自己只会存储CalenderEventModal个对象,则可以将dict_events的类型更改为[String: [CalenderEventModal]]。您的代码的修复程序如下所示:

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
    }
}