2016-12-06 86 views
0

我想创建一个带有键的字典作为日期&事件数组。日期可以有多个事件,所以我想将一个日期作为字典的关键字映射到字符串数组。我将动态日期可以没有事件或一个日期可以有多个事件。我从日期数组中获取数据,我需要将它与事件映射。如何在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 
} 

这里事件模式是事件的对象。

+0

你试过这个代码,所以什么结果你得到了什么,你预期的那样? –

+0

让你的dict_events = [String:[CalenderEventModal]]? – koropok

+0

'if let val = dict_events [key] {val.insert(eventModal) }' –

回答

0

假设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 
    } 
} 
+0

well append does not work both [Any]() – dhiraj

+2

@KevinAleman您需要将'[Any]()'改为' CalendarEventModal]()'和'dict_events'应该是'var dict_events = [String:[CalenderEventModal]]()' - 不需要可选数组;字典要么有一个键的条目,要么不是 – Paulw11

+0

@dhiraj,使用'append'时遇到了什么问题?当我们没有预期的代码与实际的用例时,很难调试你的问题。 –

相关问题