0

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

@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 作为学习体验。

想知道将字典与字典一起使用是否会更好,例如 ["fromTime":value, "toTime":value, "cost":value]

将感谢任何帮助。

谢谢你的时间。

4

2 回答 2

1

问题来自使用字符串插值dayLabel.text- 因为那是 aString?而不是 a String,所以您最终会以“Optional(Wednesday)”作为您的键,而不仅仅是“Wednesday”。您需要打开它,如下所示:

@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 时间字段执行类似的操作才能获得所需的值。

于 2014-09-17T00:09:22.797 回答
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 结尾需要一个,而不是我的其他标签,这让我更加困惑。我想我迟早会有我的啊哈时刻。我确实在这里阅读了一些帖子,但仍然不太明白。

于 2014-09-17T00:09:46.880 回答