2016-12-06 103 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'時遇到了什麼問題?當我們沒有預期的代碼與實際的用例時,很難調試你的問題。 –

相關問題