Swift / SwiftUI: почему я не могу переопределить метод, возвращающий некоторый View? - PullRequest
2 голосов
/ 20 июня 2020

В следующем примере

import SwiftUI

class AbstractOverride {
    open func configurationView() -> AnyView {
        if Features.TEST_VERSION {
            return AnyView(Text("override configurationView()"))
        } else {
            return AnyView(EmptyView())
        }
    }
    
    open func someConfigurationView() -> some View {
        if Features.TEST_VERSION {
            return AnyView(Text("override someConfigurationView()"))
        } else {
            return AnyView(EmptyView())
        }
    }

}

class SubclassOverride: AbstractOverride {
    override func configurationView() -> AnyView { // no compiler error
        return AnyView(Text("Test"))
    }

    override func someConfigurationView() -> some View { // compiler error "Method does not override any method from its superclass"
        return AnyView(Text("Test"))
    }
}

Я получаю ошибку компилятора compiler error "Method does not override any method from its superclass" в override func someConfigurationView() -> some View.

Ошибка компилятора не возвращается AnyView.

кто-нибудь может объяснить, что здесь происходит? Почему Swift не распознает одинаковые сигнатуры методов?

Это iOS 13, Xcode 11.5

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