带枚举的Swift类数组

时间:2016-07-23 10:00:04

标签: arrays swift class enums

我刚刚阅读了关于enum的Apple文档,但我仍然感到有些困惑。

假设我有一个名为员工的班级。我希望班级员工拥有一系列任务(我猜最好的选择是[String])。但我希望每项任务都具有状态,即.Complete.Incomplete

我可以在Tasks内部使用另一个名为taskName的属性,但我认为让Array存储String s

更容易

以下是我到目前为止所写的内容:

class Employee {
    class Tasks: Array { // Or [String], I have no idea
        enum Status {
            case Complete
            case Incomplete
        }
    }

    var tasks: Tasks

    init?() {
        self.tasks = Tasks()
    }
}

// Then I guess Employee.tasks[0].Status should work

我知道这很可能是错的。那我该怎么做呢?

1 个答案:

答案 0 :(得分:1)

以下是您可以采用的简单方法。

//Employee Class with Array of Task
class Employee {
    var tasks: [Task]
    init(tasks: [Task]) {
        self.tasks = tasks
    }
}

//Task Class has the status
class Task {
    var status:Status
    var taskName: String
    init(status: Status, taskName: String) {
        self.status = status
        self.taskName = taskName
    }
}

//Status is an enum
enum Status {
    case Complete
    case Incomplete
}

这是简单的测试代码......

//Testing 
let task1 = Task(status: Status.Complete, taskName: "First Task")
let task2 = Task(status: Status.Incomplete, taskName: "Second Task")
let employee = Employee(tasks: [task1, task2])

print(employee.tasks[0].status) //Prints -->> Complete
print(employee.tasks[1].taskName)//Prints -->> Second Task