【问题标题】:Swift class array with enum带有枚举的 Swift 类数组
【发布时间】:2016-07-23 10:00:03
【问题描述】:

我刚刚阅读了有关 enums 的 Apple 文档,但我仍然有些困惑。

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

我可以在 Tasks 中拥有另一个名为 taskName 的属性,但我认为只创建 Array 存储 Strings 会更容易

这是我目前想写的:

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

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

【问题讨论】:

标签: arrays swift class enums


【解决方案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

【讨论】:

  • 所以如果我还想要一个包含任务的字符串,我需要做的就是在Task 中添加var taskName: String,然后我就可以访问employee.tasks[0].taskName,对吧?
  • 是的,您可以这样做...我已经编辑了答案,请查看...@Lawrence413
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-17
  • 2011-05-02
相关资源
最近更新 更多