首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字典中的字典

字典中的字典
EN

Stack Overflow用户
提问于 2015-05-12 10:29:39
回答 2查看 1.6K关注 0票数 2

我正在尝试使用一个列表,该列表是一个字典键/对集合的值,而这个字典本身就是一个字典中的键/对集合的值。为了解释,这是我初始化它的方式。

代码语言:javascript
复制
var dictOfEvents = [Int: [Int: [PFObject]]]()

我正在尝试将事件添加到列表中,内部字典的关键字是月份的日期,外部字典的关键字是月份。例如,5月1日的事件为:

代码语言:javascript
复制
dictOfEvents[5:[1:[ListOfEvents]]

其中ListOfEventsPFObjects的数组。在添加month功能以及外部字典之前,我添加新事件的方式是:` self.dictOfEventscomponents.day = event,但现在,当我尝试用以下命令扩展它时:

代码语言:javascript
复制
self.dictOfEvents[components.month]?[components.day]! = [event]

它不起作用。任何关于如何创建新的事件列表和访问此双层字典的解释都将不胜感激。

(注意:我不知道该放在哪里!那呢?在最后一段代码中,如果我犯了错误,请原谅。)

EN

回答 2

Stack Overflow用户

发布于 2015-05-12 11:43:15

你可以简单地改变:

代码语言:javascript
复制
self.dictOfEvents[components.month]?[components.day]! = [event]

至:

代码语言:javascript
复制
self.dictOfEvents[components.month]![components.day]! = [event]

因为Dictionary有下标,所以Dictionary?没有下标。

如果您尝试将事件添加到字典。我建议使用这个:

代码语言:javascript
复制
var dictOfEvents = [Int: [Int: [PFObject]]]()

var dictOfDayEvents = [Int:[PFObject]]()

dictOfDayEvents.updateValue([PFObject()], forKey: 1)
dictOfEvents.updateValue(dictOfDayEvents, forKey: 5)
票数 1
EN

Stack Overflow用户

发布于 2015-05-12 11:47:00

下面是我认为在你的案例中可以很好地使用optionals的方法(并且应该回答你的问题):

代码语言:javascript
复制
var dic: [Int: [Int: [String]]] = [:]
dic[5] = [1:["Hello", "World"]]

if let list = dic[5]?[1] {
    // your list exist and you can safely use it
    for item in list {
        println(item)
    }
}

我只是用String代替了PFObject

一种不同的方法可以是:

代码语言:javascript
复制
/*
Define a struct to encapsulate your Month and Day
Make it Hashable so that you can use it as Dictionary key
*/
public struct MonthDay: Hashable {
    let month: Int
    let day: Int
    public var hashValue: Int { return month * 100 + day }
}

public func ==(lhs: MonthDay, rhs: MonthDay) -> Bool {
    return lhs.month == rhs.month && lhs.day == rhs.day
}

var dictOfEvents = [MonthDay :[String]]()
let aMonthAndDay = MonthDay(month: 5, day: 1)

dictOfEvents[aMonthAndDay] = ["Hello", "World"]
if let list = dictOfEvents[aMonthAndDay] {
    // your list exist and you can safely use it
    for item in list {
        println(item)
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30180753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档