如何在Swift中访问存储在Dictionary中的数组?

时间:2014-09-16 23:09:24

标签: ios cocoa-touch swift swift-dictionary swift-array

这是我使用数组创建词典的方式:

@IBAction func didTapSaveButton(sender: UIButton) {
    var hooObject = Dictionary<String, [String]>()
    hooObject["\(dayLabel.text)"] = ["\(fromTimeLabel.text) - \(toTimeLabel.text)", "\(costField.text)"]
    NSLog("RESULT: \(hooObject)")
}

NSLog结果:

 RESULT: [Optional("Wednesday"): [Optional("9:00 PM") - Optional("3:00 PM"), 40.00]]

我试过这个:

@IBAction func didTapSaveButton(sender: UIButton) {
    var hooObject = Dictionary<String, [String]>()
    hooObject["\(dayLabel.text)"] = ["\(fromTimeLabel.text) - \(toTimeLabel.text)", "\(costField.text)"]
    var res = hooObject["Wednesday"]
    NSLog("RESULT: \(res)")

}

这会返回nil,这对我没有意义。星期三是存储的密钥所以我认为它足以返回数组。

我想做的事情:

基本上我有一个包含7个部分的表格,每个部分代表一天。在每一天,我都会存储时间段,并且需要在该位置预订活动的费用。

当我使用numberOfRowsInSection时,我将能够使用Dictionary键来获取将在tableView中显示的特定日期的行数(时隙)。这是我用NOSql做的最简单的方法。

我将字典存储在parse.com的一列中,并在我的tableView中访问该字典。

无论如何,我不明白为什么我似乎无法使用密钥访问阵列。我可以很容易地使用NSMutableDictionary,但我使用Swift作为学习经历的所有项目。

想知道使用带字典的词典是否更好,例如[&#34; fromTime&#34;:value,&#34; toTime&#34;:value,&#34; cost&#34;:value]

感谢任何给予的帮助。

感谢您的时间。

2 个答案:

答案 0 :(得分:1)

问题来自于在dayLabel.text上使用字符串插值 - 因为这是String?而不是String,您最终将“可选(星期三)”作为您的密钥而不是只是“星期三”。你需要打开它,如下所示:

@IBAction func didTapSaveButton(sender: UIButton) {
    var hooObject = Dictionary<String, [String]>()
    if let day = dayLabel.text {
        hooObject["\(day)"] = ["\(fromTimeLabel.text) - \(toTimeLabel.text)", "\(costField.text)"]
        NSLog("RESULT: \(hooObject)")
    }
}

您可能需要执行与from和to时间字段类似的操作来获取所需的值。

答案 1 :(得分:0)

我的回答:

@IBAction func didTapSaveButton(sender: UIButton) {
    var hooObject = Dictionary<String, [String]>()
    hooObject["\(dayLabel.text!)"] = ["\(fromTimeLabel.text) - \(toTimeLabel.text)", "\(costField.text)"]
    var res = hooObject["Wednesday"]
    NSLog("RESULT: \(res)")
}

我不得不将dayLabel.text更改为dayLabel.text!

那些惊叹号真让我感到困惑。起初我以为它们就像指针,因为它们不能用于Int,Float等(所以我认为)。

但事实上我在dayLabel.text结束时需要一个而不是我的其他标签让我更加困惑。我想及时我会有我的啊哈哈。我确实在这里读了几篇文章,但仍然没有得到它。