0

コア データ NSManagedObjects にバインドされた UI コントロールを使用してコア データ オブジェクトを更新しているときに、奇妙な問題に突然遭遇しました。

症状は次のとおりです。 - OutlineView は、階層オブジェクトのリストを表示します - 詳細ビューは、選択したオブジェクトのデータ フィールドを表示します。これらには、テキスト フィールド、日付などが含まれます。 - 詳細ビューで更新が行われると、これらは OutlineView に反映されます。 (例えば、displayName は OutlineView で使用されます)。- ただし、変更を保存すると、保存する変更がないことが managedObjectContext から通知されます。そのため、何らかの理由で、UI は状況が変化したことをコンテキストに知らせていません。- バインディングが IB で行われることを考えると、UI の変更は自動的に managedObjectContext に反映されると思います - 何らかの理由で、フィールドの 1 つが常に、変更が行われたことを認識するコンテキストになるようですが、他のフィールドは認識されないようです。

誰かがこれを引き起こしている可能性があることを知っている場合-たとえば、テキストフィールドのテキストを変更するなど、UI の変更がいつ行われたか、およびこれらの変更が managedObjects に伝達されるかどうかを監視する方法はありますか?

編集問題が見つかりました-何らかの理由で、コアデータエンティティのobjective-cクラスでプロパティの一部を@dynamicから@synthesizeに変更しました。これは物事を壊していました!

4

1 に答える 1

0

変更が認識されるように、IBOutlets をコールバックに接続する必要があります。接続しない限り、変更は報告されません。したがって、textField.text != oldText であっても、その更新を取得してエンティティに保存し、それが認識されるかどうかを確認しない限り、問題ではありません。

于 2013-08-08T01:23:39.237 に答える