私は、ツリーに似た管理対象オブジェクトのかなり大きな階層を持つコア データ アプリケーションに取り組んでいます。
基本オブジェクトが作成されると、いくつかの子オブジェクトが作成され、それらが独自の子オブジェクトを作成します。これらの子オブジェクトはそれぞれ、NSURLConnections を使用して情報を収集できます。
ここで、managedObjectContext の undoManager で元に戻す/やり直しをサポートしたいと思います。問題は、ユーザーがベース オブジェクトを作成し、そのアクションを元に戻そうとすると、ベース オブジェクトが削除されないことです。代わりに、1 つ以上の子オブジェクトが削除される場合があります。明らかに、この種のアクションは予測不可能で望ましくありません。
ということで、アンドゥ登録をデフォルトで無効にしてみました。disableUndoRegistration:
これは、managedObjectContext で何かが変更される前に呼び出すことで行いました。次に、ベースオブジェクトの作成などのベース操作の前に登録の取り消しを有効にし、後で登録を再度無効にします。
元に戻そうとすると、次のエラーが表示されます。
undo: NSUndoManager 0x1026428b0 が無効な状態です。ネストされた undo グループが多すぎる状態で undo が呼び出されました
考え?