Przeczytałem dokumenty Swift i przeszukano tutaj, ale nadal nie jestem pewien, w jaki sposób zaimplementować hierarchię klas, gdzie każda podklasa ustawia wartość niestandardową dla odziedziczonej właściwości statycznej; to jest:Nieporozumienia dotyczące nadpisywania właściwości klas w Swift
- Klasa podstawowa definiuje właściwość statyczną: wszystkie wystąpienia mają tę samą wartość.
- Podklasa zastępuje właściwość statyczną: wszystkie wystąpienia mają tę samą wartość, , która różni się od klasy bazowej.
Czy nieruchomość może być przechowywana?
Ponadto, w jaki sposób uzyskać dostęp do wartości właściwości z metody instancji (niezależnie od konkretnej klasy) i uzyskać poprawną wartość za każdym razem? czy poniższy kod zadziała?
class BaseClass
{
// To be overridden by subclasses:
static var myStaticProperty = "Hello"
func useTheStaticProperty()
{
// Should yield the value of the overridden property
// when executed on instances of a subclass:
let propertyValue = self.dynamicType.myStaticProperty
// (do something with the value)
}
Dzięki. Jeśli więc zmienna klasy zawiera duży słownik odczytany z pliku (którego nie mogę obliczyć za każdym razem), będę musiał ustawić oddzielną, przechowywaną statyczną zmienną dla każdej podklasy, przechowywać tam mój słownik i zwraca jego wartość w przesłoniętej (obliczonej) klasie porperty, prawda? –
@NicolasMiari Jednym ze sposobów obejścia "klasy vars nie mogą być przechowywane właściwości" _ ograniczenie polega na umieszczeniu każdej klasy we własnym pliku _ (co zwykle robisz) _, a następnie utworzeniu przechowywanego zakresu plików- Właściwość var odwzorowuje klasę computed-property var, podobnie jak to: 'fileprivate static var _thingStorage: String'. Następnie w twojej klasie twoja własność obliczeniowa staje się 'override class var rzecz: String {return _thingStorage}'. –