chcę deklarować w formie protokołu ustaleń class func
, zamierzam być zgodne z tym protokołem z klasy A, B i C.Protokół metody klasy
B i C dziedziczą z A.
Zasadniczo I aby zmienić to func w B i C, a jednocześnie zapewniając realizację w A.
Więc musiałem zadeklarować moje protokół następująco:
protocol MyManagedObjectCoolStuff {
static func entityName() -> String
}
a potem mam t jego w A:
class A: NSManagedObject { }
class B: A { }
class C: A { }
extension A: MyManagedObjectCoolStuff {
static func entityName() -> String {
return "Animal"
}
}
extension B: MyManagedObjectCoolStuff {
override static func entityName() -> String {
return "Bat"
}
}
extension C: MyManagedObjectCoolStuff {
override static func entityName() -> String {
return "Cat"
}
}
Problemem tutaj, jest jasne i Xcode potwierdza: „metoda klasy zastępuje się«ostateczny»metody klasy”.
Jak można to obejść? Nie mogę użyć class func
w protokole ... Nie jestem pewien, jak to streścić.
Dzięki!
usuń "override static" w B i C, nie może być dwóch implementacji funkcji statycznej. – Daniel
Alternatywnie, nie powoduj dziedziczenia B i C z A. – Daniel