Мне нужно наблюдать класс Unicorn (наследуется от NSObject), но по коммерческим соображениям я не могу использовать правильную реактивную структуру, чтобы иметь наблюдаемые свойства. Мне нужно отступить к КВО (бог помоги мне).Как вставить статическую структуру в класс Swift?
Чтобы сделать вещи НЕ «строгими», у меня есть идея ввести статическое свойство, называемое наблюдаемымKeyPaths, которое предоставит все ключевые блоки, которые на самом деле являются KVO-наблюдаемыми для класса Unicorn ... с использованием точечной нотации.
Приведем пример. Класс Unicorn имеет свойство status
, которое может быть KVOed. Тогда, когда я был бы создание моего наблюдателя, я хотел бы сослаться на ключевом пути, как это:
unicornInstance.addObserver(self, forKeyPath: Unicorn.observableKeyPaths.status ...etc..)
Я могу придумать структуры, как это:
struct UnicornObservableKeyPaths {
static let status = "status"
}
можно ссылаться Эта структура легко:
UnicornObservableKeyPaths.status
Но как я могу сделать эту структурную часть класса? Ниже не работает для меня:
class Unicorn {
dynamic private(set) var status: String
static let observableKeyPaths: UnicornObservableKeyPaths = UnicornObservableKeyPaths()
}
Есть идеи? Что мне здесь не хватает? Когда я ссылаться на статическом property..I может получить доступ к этому
Unicorn.observableKeyPaths
но не status
статического члену struct..why?
Do вы знаете о записи Swift 3 '# keyPath'? – matt
Теперь. Спасибо. –