SwiftのシングルトンプロパティでKVCを使用することが可能かどうかについて私の質問がありました。私はクラスでKVCをテストしていましたが、クラスを動作させることができましたが、それがSingletonクラスで動作するかどうかを確認することに決めました。
私のシングルトンの "共有"プロパティがKVCに準拠していないというエラーが発生しました。シングルトンパターンでKVCを使用する
class KVOObject: NSObject {
@objc static let shared = KVOObject()
private override init(){}
@objc dynamic var fontSize = 18
}
override func viewDidLoad() {
super.viewDidLoad()
addObserver(self, forKeyPath: #keyPath(KVOObject.shared.fontSize), options: [.old, .new], context: nil)
}
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
if keyPath == #keyPath(KVOObject.shared.fontSize) {
// do something
}
}
私は現在、下のエラーを取得しています:
NetworkCollectionTest [9714:452848] ***キャッチされない例外により 'NSUnknownKeyException'、理由にアプリを終了:「[addObserver:forKeyPath:共有 "@。 fontSize "options:3 context:0x0]"共有 "プロパティでKVCに準拠していないオブジェクトに送信されました。
キーパスは '#keyPath(KVOObject.fontSize)'ですか? – Rob
'#keyPath(KVOObject.fontSize) 'を使っても動作しますが、' KVOObject.shared.fontSize'というプロパティが変更されても、それは観測されません。 – victorydub
これは機能します!ありがとう – victorydub