Tôi muốn thêm trình quản lý hoàn tác vào ứng dụng iPhone được lưu trữ coredata. Khi người dùng cố gắng thêm một đối tượng mới (bằng cách nhấn vào nút +), tôi tải một bộ điều khiển chế độ xem mới và bắt đầu một nhóm hoàn tác mới trong viewDidLoad.Nhóm hoàn tác lồng nhau với CoreData
Khi người dùng nhấn nút Hủy, tôi muốn khôi phục các thay đổi trong hủyHành động gọi lại.
Queries:
- Có thể bắt đầu một nhóm Undo lồng và kiên trì vượt qua vòng lặp sự kiện và đối chiếu tất cả các thay đổi được thực hiện trong một nhóm undo duy nhất? Ngay bây giờ, khi tôi gọi beginUndoGrouping trong cancelAction, tôi nhận được một ngoại lệ startUndoGrouping bị thiếu.
- Ý nghĩa của API nhómByEvent cho NSUndoManager là gì? Tôi có cần phải đặt nó thành NO để duy trì một nhóm hoàn tác thông qua vòng lặp sự kiện không?
- Điều gì cần được thực hiện trong lời gọi hành động saveAction để thực hiện thay đổi vĩnh viễn (ngoài việc gọi điện lưu trên mangedObjectContext)? Làm cách nào để tôi cho Trình quản lý hoàn tác ngừng theo dõi các thay đổi?
Thông báo lỗi:
* Chấm dứt ứng dụng do ngoại lệ còn tự do 'NSInternalInconsistencyException', lý do: '_endUndoGroupRemovingIfEmpty :: NSUndoManager 0x75415f0 ở trạng thái không hợp lệ, endUndoGrouping gọi mà không có khớp bắt đầu
Sample Mã số:
// 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
}