在协议中实现某种形式的枚举

时间:2019-03-28 23:38:41

标签: swift enums

我要在我以前使用导航器的应用程序中添加协调器。我写了一个基本的协调器协议,看起来像这样。

public protocol Coordinator: class {
    /// The array containing any child Coordinators
    var childCoordinators: [Coordinator] { get set }

    func start()
    func show()
}

public extension Coordinator {

    /// Add a child coordinator to the parent
    public func addChildCoordinator(_ childCoordinator: Coordinator) {
        self.childCoordinators.append(childCoordinator)
    }

    /// Remove a child coordinator from the parent
    public func removeChildCoordinator(_ childCoordinator: Coordinator) {
        self.childCoordinators = self.childCoordinators.filter { $0 !== childCoordinator }
    }

}

现在,我喜欢实现导航器的事情是,通过使用枚举,我可以导航到视图。例如,我可以这样做:

navigator.navigate(to: .preferences)

有没有办法将其合并到我的协调员中?我知道我无法为实现该协议的类可能会更改的协议添加一个枚举。另外,如您所见,我已经在协议中添加了show()函数。有什么方法可以向该函数添加枚举或类型别名或其他参数吗?

1 个答案:

答案 0 :(得分:0)

protocol Coordinator: class {

    func show(param: MyEnum)
}

enum MyEnum {
case first
}

天哪,足够了