将项目添加到'例程'中的特定tableview部分标签。每天都拥有它自己的列表或例程

时间:2017-11-20 22:24:31

标签: ios arrays swift uitableview dictionary

我的目标是拥有一个简洁的数据结构,其中包含一个与每周中每一天相对应的键,每天都有一个任务列表可以进入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

以上是我如何解决这个问题的代码,但我觉得它可以做得更好。我是否过于复杂或者我的代码看起来很有趣?我只是在寻求如何改进这些代码的建议。我会附上应用程序的照片,以便您可以了解代码的工作原理。

照片:https://imgur.com/WB8fW6e

例程选项卡有一个tableview,其中包含3个部分," Warm-up"," Workout"和"拉伸"。当用户创建新的例程任务时,他们会指定它将转到哪个部分。我想到这个问题的方法是使字典的键对应于一周中的某一天,它的值是类型' RoutineTask',RoutineTasks是一个跟踪tableview的结构具有' taskSection'的部分财产和举行任务'任务'属性。

现在你们对我的代码有一个大概的了解,你认为这是正确的方法吗?还是有更好的方法来完成我正在做的事情?任何帮助将不胜感激,谢谢。

1 个答案:

答案 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