Я хотел бы создать класс со статическим свойством, которое подклассы могут переопределять, который будет использоваться для инициализации экземпляров.До сих пор я пытался сделать это следующим образом:
import Cocoa
class A: NSObject {
class var staticProperty: String {
return "A"
}
var property: String = A.staticProperty
}
class B: A {
override class var staticProperty: String {
return "B"
}
}
Это не работает, поскольку B().property
по-прежнему возвращает "A"
.Как я могу изменить этот код так, чтобы property
содержал значение, указанное подклассом?Буду признателен за любую помощь!
Редактировать Я хотел бы инициализировать property
значением staticProperty
, так что это также может выглядеть следующим образом:
var property: SomeClass = SomeClass(A.staticProperty)
Но тогда эта инициализация все равно должна использовать "A"
для класса A и "B"
для класса B.
Редактировать 2 (после комментария @ RakeshaShastri) Для моего конкретного использования-В этом случае мне нужно, чтобы property
было сохранено (поэтому не вычислено) и не ленилось.
Редактировать 3 Короче говоря, я пытаюсь создать класс модели Realm, который имеетмало-много отношений с другими моделями.Для этих моделей (которые очень похожи) я пытаюсь создать суперкласс, который содержит общие функциональные возможности, среди которых также обратные отношения.Поэтому я хочу иметь статическое свойство, которое содержит ключ в первой модели для любой из других моделей, а затем инициализировать свойство LinkingObjects, используя это имя ключа.Поскольку Realm не допускает, чтобы это было ленивым или вычисленным, я не могу использовать эти функции здесь.