私はオブジェクトを持っています - Config
。 Account
属性がConfig
に変更されているかどうかを知りたいこれが起こると、私はNSNotification
を送信して、Account
の変更が気になるすべてのコードがわかるようにしたいと思います。私の最初の考えは、私のNSManagedObject
サブクラスで、setAccount
メソッドをオーバーライドして、AccountDidChange
をtrue
に設定するという方法でした。その後、didSave
の場合AccountDidChange
がtrue
だった場合、通知を送信してからfalse
に戻します。より良い方法がありますか?私の問題は、私が読んだことから、AccountDidChange
をfalse
に戻すことで、私のオブジェクトが汚れてしまい、再び保存する必要があるということです。コアデータNSManagedObject - 属性が変更された場合のトラッキング
もう少し情報: Config
オブジェクトは、アプリケーションの現在の設定です。 Account
は実際にActiveAccount
に変更できます。すべてのアカウントのリストを持つAccount
エンティティとの関係があります。アイデアは、ユーザーがアプリケーションのアクティブなアカウントを変更できることです。そのため、一連のサーバーがあり、ユーザーは一度に1つにしかログインできません。 Config.Account
はそのアクティブなアカウントを指し、情報を取得するためにサーバーへの接続をセットアップするために使用されます。私はConfig.Account
がアラートのリストのような情報をクリーンアップするように他のオブジェクトに指示するように変更されたというこの通知を使用しています。基本的には、すべての情報はアカウント単位であるため、新しいアクティブなアカウントで次回の読み込み時に削除してから再設定する必要があります。
また、与えられた名前は私の実際のオブジェクト名ではありません。例を簡単に従わせようとしています。
これを正しく理解すると、observeValueForKeyPath ...は、アカウントの変更時に呼び出されます。保存されたときだけでなく、呼び出されます。私は店舗にいつ実際に保存されているのかを知りたいと思った方がより具体的であったはずです。また、おそらく私は第2の問題を抱えています。これは、いつ/どのように変更を保存するかを完全に理解していません。 Configのアカウントの値を変更しても、保存されるまでは実際には変更されません。おそらく、変更と保存は2番目のコンテキストで行われ、次にメインのアプリケーションコンテキストにマージされるべきです。これはまだ私にとって新しいものですが、ありがとうございます。 – Brian
私はより多くの情報を追加しました - ありがとうございました。 – Brian
アクティブアカウントが変更されているのではなく、保存時に通知を受けたい理由がわかりません。しかし、アプリケーション内にはConfigオブジェクトが1つしかないので、アプリケーションコントローラ内の変更を追跡したり、最も理にかなっている箇所を追跡したり、管理対象オブジェクトコンテキストのNSManagedObjectContextDidSaveNotificationに通知したりするのは簡単です最後の保存以降に変更されました。 –