2

info私は(多くの情報を含むモデルクラス)という名前のプロパティを含むクラス(classAと呼びます)を持っています。これにはname(文字列)という名前のプロパティが含まれています。nameclassA で文字列が変更されたときに、別のクラス (classB) が KVO 通知を受信するようにします。

これは、classB で現在行っていることです。

[classA addObserver: self forKeyPath: @"info.name" options: 0 context: nil];

nameclassAの値が変化する方法は 2 つありclassA.info.name = ...ますinfoclassA.info = ...

name直接変更すると、KVO は完全に機能します。ただし、infoプロパティが設定され、name間接的に変更されると、次のエラーが発生します。

Cannot update for observer <classB> for the key path "info.name" from <classA>, most likely because the value for the key "info" has changed without an appropriate KVO notification being sent. Check the KVO-compliance of the classA class.

これを機能させるには、classA で何を変更する必要がありますか?

4

2 に答える 2

-1

オプションを 0 にすることはできないと思います。

これは古い API で、Apple が API の設計に熱心になる前にさかのぼります。何かを与える必要があります。

于 2012-09-27T16:56:14.950 に答える