Как мне получить доступ к массиву, хранящемуся в словаре в Swift?
Вот как я создал свой словарь с массивом:
@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)")
}
Это возвращает ноль, что не имеет смысла для меня. Среда - это сохраненный ключ, поэтому я подумал, что этого будет достаточно, чтобы вернуть массив.
Что я пытаюсь сделать:
В основном у меня есть таблица с 7 разделами, и каждый представляет день. Каждый день я храню временные интервалы со стоимостью бронирования активности в этом слоте.
Когда я использую numberOfRowsInSection, я смогу использовать ключ Dictionary, чтобы получить количество строк (временных интервалов) для определенного дня, который будет показан в tableView. Это был самый простой способ сделать это с помощью NOSql.
Я храню словари в столбце на parse.com и получаю доступ к этому словарю в моем tableView.
Во всяком случае, я не понимаю, почему я не могу получить доступ к массиву с помощью ключа. Я мог бы легко пойти и использовать NSMutableDictionary, но я использую Swift для всех своих проектов в качестве опыта обучения.
Хотите знать, было бы лучше использовать словарь со словарями, например, ["fromTime": значение, "toTime": значение, "стоимость": значение]
Буду признателен за любую помощь, оказанную.
Спасибо за ваше время.
2 ответа
Проблема возникает из-за использования интерполяции строк 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 time, чтобы получить нужные значения.
Мой ответ:
@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, а не другие мои ярлыки, ставит меня в тупик еще больше. Думаю, со временем у меня будет момент ах-ха. Я прочитал несколько постов здесь, но до сих пор не совсем понял.