我的目标是拥有一个简洁的数据结构,其中包含一个与每周中每一天相对应的键,每天都有一个任务列表可以进入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
以上是我如何解决这个问题的代码,但我觉得它可以做得更好。我是否过于复杂或者我的代码看起来很有趣?我只是在寻求如何改进这些代码的建议。我会附上应用程序的照片,以便您可以了解代码的工作原理。
例程选项卡有一个tableview,其中包含3个部分," Warm-up"," Workout"和"拉伸"。当用户创建新的例程任务时,他们会指定它将转到哪个部分。我想到这个问题的方法是使字典的键对应于一周中的某一天,它的值是类型' RoutineTask',RoutineTasks是一个跟踪tableview的结构具有' taskSection'的部分财产和举行任务'任务'属性。
现在你们对我的代码有一个大概的了解,你认为这是正确的方法吗?还是有更好的方法来完成我正在做的事情?任何帮助将不胜感激,谢谢。
答案 0 :(得分:1)
使用更多enums
会更好。使应用程序的数据具有强类型,并且使用switch
语句的能力比在各地比较字符串要好得多。例如,您可以声明"Monday"
,而不是使用"Tuesday"
,enum
等,甚至可以使用{{enum
来获取当天的名称。 1}}。
monday.rawValue
enum Weekday : String {
case monday = "Monday"
case tuesday = "Tuesday"
// ...
}
和enums
的更多taskSection
也会很棒。以下routineName
可用于为enum
提供更具体的名称。
RoutineName