私はUnicornクラス(NSObjectから継承)を観察する必要がありますが、ビジネス上の理由から、私は観察可能なプロパティを持つために適切な反応フレームワークを使用することはできません。 私はKVOにフォールバックする必要があります(神は私を助けます)。Swiftクラスに静的構造体を埋め込む方法は?
私は、文字列型ではないことを確認するために、observableKeyPathsという静的プロパティを導入する考えがあります。これは、実際にはUnicodeクラスの... KVO観測可能なすべてのkeyPathを提供します。
例があります。 Unicornクラスには、KVOされるプロパティstatus
があります。 私はオブザーバーを設定することになるときに、私はこのようなキーパスを参照するとよいでしょう:
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
なくstruct..whyのstatus
静的メンバにアクセスすることができますか?
を実行します。 Swift 3 '#keyPath'表記について知っていますか? – matt
私は今します。ありがとうございました。 –