coredataでバックアップされたiphoneアプリケーションに元に戻すマネージャを追加します。ユーザーが(+ボタンをタップして)新しいオブジェクトを追加しようとすると、私は新しいモーダルビューコントローラをロードし、viewDidLoadで新しいアンドゥグループを開始します。CoreDataを使用した入れ子になった元に戻すグループ
キャンセルボタンを押すと、cancelActionコールバックの変更をロールバックします。
クエリ:
- それがネストされて元に戻すグループを開始し、イベントループを通してそれを持続し、1つのアンドゥグループで行われたすべての変更を照合することは可能ですか?今、私がcancelActionでbeginUndoGroupingを呼び出すと、beginUndoGrouping例外が見つからなくなります。
- NSUndoManagerのgroupsByEvent APIの重要性は何ですか?私はイベントループを通して元に戻すグループを維持するためにNOに設定する必要がありますか?
- 変更を永続的にするためにsaveActionコールバックで何を行う必要がありますか(mangedObjectContextのsaveを呼び出すこととは別)元に戻すマネージャーに変更の追跡を停止するように指示するにはどうすればよいですか?
エラーメッセージ:キャッチされない例外により 'NSInternalInconsistencyException'、理由にアプリを終了
*:「_endUndoGroupRemovingIfEmptyを:: NSUndoManager 0x75415f0は無効な状態にあり、
サンプルを開始していないマッチングと呼ばれるendUndoGroupingコード:
// RootViewController.m
- (void) addAction {
// Load Modal View Controller to add new object
}
// AddViewController.m
- (void) viewDidLoad {
// Start nested undo group
[self.managedObjectContext processPendingChanges];
[self.managedObjectContext.undoManager beginUndoGrouping];
[self createModel];
}
- (void) cancelAction {
// Revert all changes
[self.managedObjectContext processPendingChanges];
[self.managedObjectContext.undoManager endUndoGrouping];
[self.managedObjectContext.undoManager undoNestedGroup];
...
}
- (void) saveAction {
// Save changes
}