Реализовать некоторую форму перечислений в протоколе - PullRequest
0 голосов
/ 29 марта 2019

Я добавляю координаторы в свое приложение, где я использовал навигаторы.Я написал базовый протокол координатора, который выглядит следующим образом.

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 }
    }

}

Теперь, что мне понравилось в моей реализации навигаторов, это то, что с помощью enum я мог перейти к представлению.Например, я мог бы сделать это:

navigator.navigate(to: .preferences)

Есть ли способ, я мог бы включить это в мой координатор?Я знаю, что не могу добавить перечисление к протоколу, чтобы классы, реализующие протокол, могли измениться.Также, как вы можете видеть, я уже добавил в протокол функцию show().Есть ли способ, которым я мог бы добавить enum или typealias или что-то в качестве параметра для этой функции?

1 Ответ

0 голосов
/ 29 марта 2019
protocol Coordinator: class {

    func show(param: MyEnum)
}

enum MyEnum {
case first
}

Имхо, достаточно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...