NSPersistentDocument 在内部启动后标记为未 "dirty"/编辑
NSPersistentDocument to be marked as not "dirty"/edited after internal initiation
我有一个 NSPersistentDocument (CoreData),我在将它呈现给用户之前启动了它。这意味着我创建了一些内部核心数据对象并将它们添加到 document/persistent store/managed 对象上下文中。
但是,这意味着即使没有用户 activity 正在发生,文档也会在文档关闭时显示保存对话框。我希望它被标记为不脏并且没有保存对话框,因为没有发生真正的变化。
有什么想法吗?非常感谢!
脏状态连接到documentEdited
。 documentEdited
由 updateChangeCount:
设置。 updateChangeCount:
由撤消管理器自动调用。
调用 [[self undoManager] removeAllActions];
或其 Swift 等价物以移除脏状态。
我通过在 awakeFromNib
中实现这个来解决这个问题:
- (void)awakeFromNib {
// Disable Undo
[self.managedObjectContext processPendingChanges];
[[self undoManager] disableUndoRegistration];
// Do your initialization thing
// Process changes to the object graph and reenable Undo
[self.managedObjectContext processPendingChanges];
[[self undoManager] enableUndoRegistration];
// Rest of awakeFromNib, if any
}
我有一个 NSPersistentDocument (CoreData),我在将它呈现给用户之前启动了它。这意味着我创建了一些内部核心数据对象并将它们添加到 document/persistent store/managed 对象上下文中。
但是,这意味着即使没有用户 activity 正在发生,文档也会在文档关闭时显示保存对话框。我希望它被标记为不脏并且没有保存对话框,因为没有发生真正的变化。
有什么想法吗?非常感谢!
脏状态连接到documentEdited
。 documentEdited
由 updateChangeCount:
设置。 updateChangeCount:
由撤消管理器自动调用。
调用 [[self undoManager] removeAllActions];
或其 Swift 等价物以移除脏状态。
我通过在 awakeFromNib
中实现这个来解决这个问题:
- (void)awakeFromNib {
// Disable Undo
[self.managedObjectContext processPendingChanges];
[[self undoManager] disableUndoRegistration];
// Do your initialization thing
// Process changes to the object graph and reenable Undo
[self.managedObjectContext processPendingChanges];
[[self undoManager] enableUndoRegistration];
// Rest of awakeFromNib, if any
}