ios - Swift - 使用 [String: [String: String]] 的字典填充 uitableview
问题描述
我是 Swift 的新手,我目前正在创建一个询问用户问题的日记应用程序。我像这样存储用户的输入:
dict = ["date": ["question1": "answer", "question2": "answer"]]
现在我需要在表格视图中将这些数据显示给用户,其中“日期”是标题,“问题 1”是描述。
我在网上查看过,但答案似乎引用了“indexPath.row”来将信息输入到单元格中,但由于这是一个字符串字典,我不能这样做。
感谢您的帮助!
解决方案
与其使用字典数组,不如考虑使用能更好地表示数据的对象。
struct Question: {
let question: String
let answer: String
}
struct DiaryDay {
let date: Date // Note this is a Date object, not a String
let questions: [Question]
}
那么你有
let diaryDays = DiaryDay(date: <date>, questions:
[Question(question: "question1": answer: "answer"),
Question(question: "question2": answer: "answer")])
虽然有更多的代码,但你会发现更容易看到正在发生的事情。
看来你应该每天写一个部分……</p>
override func numberOfSections(in tableView: UITableView) -> Int {
return diaryDays.count
}
然后每个问题一行…</p>
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
let diaryDay = diaryDays[section]
return diaryDay.questions.count
}
然后配置你的单元格……</p>
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
// dequeue cell
let diaryDay = diaryDays[indexPath.section]
let question = diaryDay.questions[indexPath.row]
cell.question = question
return cell
}
并在部分标题中显示日期...</p>
override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
let diaryDay = diaryDays[section]
return // formatted diaryDay.date
}
推荐阅读
- clang - 如何显示为 clang 调用计算的编译器标志?
- python - 使用数组或 1 行数据帧更快吗?
- c# - 获取用 C# 文本框编写的 Windows 窗体应用程序以输出您想要的文本
- node.js - 观看多个扩展并根据扩展运行不同的脚本
- ios - 在主 UI 更改时,如何防止插页式广告消失时崩溃?
- asp.net-core - .NET Core 32 位 (x86) 版本的 HTTP 错误 500.31 - ANCM 无法找到本机依赖项 此问题的常见解决方案 错误:
- javascript - 功能组件中的 extraData flatlist 道具?
- rust - 为什么 Rust 需要包和工作空间?
- python - 如何根据预先确定的规则计算列的值,并使用该计数创建新列?
- javascript - discord.js 删除机器人发送的嵌入