Проверка, является ли объект «типом» c в Swift - PullRequest
1 голос
/ 28 января 2020

И я хочу добавить расширение к протоколу View SwiftUI, которое меняет поведение в зависимости от фактического типа представления:

extension View {
    func something() {
        switch self { 
            case is Text: // Do stuff.
            case is Button<AnyView>: // Do other stuff
            default: // Do other other stuff
        }
    }
}

Однако случай is Button<AnyView> не встречается ни для какого Button тип. Я не могу not указать тип generi c, и я также не могу указать Any. Как проверить, является ли объект is универсального c типа?

(я не могу использовать дополнительные, более точные c extension s для переопределения этой функции, по-видимому.)

1 Ответ

1 голос
/ 28 января 2020

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

extension View {
    func something() -> Self {
        switch self {
            case is Text: // Do stuff.
                print("> text")
            case is Button<Text>: // Do other stuff
                    print("> text button")
            case is Button<Image>: // Do other stuff
                    print("> image button")
            default: // Do other other stuff
                print("> other")
        }
        return self
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...