我的目标是拥有一个简洁的数据结构,该结构具有对应于一周中每一天的键,每天都有一个任务列表,可以进入 TableView 中 3 个部分中的一个。下面是我的代码。
struct Routines {
let thumbnailImg: String
let routineName: String
let duration: String
}
struct RoutineTask {
var taskSection: String
var task: Routines
}
// routineList will contain all 7 days of week, with a value of RoutineTask which tracks the section that task belongs to and the task itself
var routinesList: [String: RoutineTask?] = [
"Monday" : nil,
"Tuesday" : nil,
"Wednesday" : nil,
"Thursday" : nil,
"Friday" : nil,
"Saturday" : nil,
"Sunday" : nil
]
let routine = RoutineTask(taskSection: "WarmUp", task: Routines(thumbnailImg: "Crunches", routineName: "Sit ups", duration: "75 secs"))
routinesList["Monday"] = routine
以上是我如何解决这个问题的代码,但我觉得它可以做得更好。我是不是太复杂了,还是我的代码看起来很有趣?我只是在寻求有关如何改进此代码的建议。我将附上应用程序的照片,以便您可以直观地了解代码的工作原理。
常规选项卡有一个表格 View ,其中包含 3 个部分,“热身”、“锻炼”和“拉伸(stretch)运动”。当用户创建新的例行任务时,他们指定它将转到哪个部分。我想到这个问题的方式是有一个字典,它的键对应于一周中的一天,它的值是“RoutineTask”类型,RoutineTasks 是一个结构,它将跟踪具有“taskSection”属性的 tableview 部分并保存 Routines在“任务”属性中。
既然你们对我的代码有了大致的了解,你们认为这是正确的方法吗?还是有更好的方法来完成我正在做的事情?非常感谢任何帮助,谢谢。
最佳答案
使用更多的enums
会是一个更好的主意。让您的应用程序的数据是强类型的并且能够使用 switch
语句比必须在任何地方比较字符串要好得多。例如,不使用 "Monday"
、"Tuesday"
等,您可以声明一个 enum
,甚至仍然可以获得名称使用 monday.rawValue
的 enum
中的日期。
enum Weekday : String {
case monday = "Monday"
case tuesday = "Tuesday"
// ...
}
taskSection
和 routineName
的更多enums
也会很棒。以下 enum
可用于为 RoutineName
指定一个更具体的名称。
enum RoutineName {
case crunches(name: String)
}
关于ios - 将项目添加到 'Routine' 选项卡中的特定 TableView 部分。每一天都有自己的 list 或例程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47402127/