0

这是我的问题:

我有一个基于文档的应用程序,全部使用 Core Data 编写。创建新文档时(在应用程序启动时,或使用 File > New 或 Cmd+N),我需要使用初始种子对象填充此文档。假设我的文档是一个笔记本,所以我希望新文档在创建时包含一个空笔记。所以我无辜地插入我的对象(-[NSEntityDescription initWithEntity: insertIntoManagedObjectContext:),它工作。

我的问题是,文档似乎在打开后立即被编辑。这是一个糟糕的用户体验。此外,当关闭此文档而不添加任何进一步的更改时,会提示用户保存它(超级麻烦!)。

因此,到目前为止,我尝试解决此问题的方法是将操作设置为可在我的 undo-manager 上丢弃-[NSUndoManager setActionIsDiscardable:](设置为YESon [myDocument undoManager])。但这并没有改变任何东西。

为了调试,我覆盖-[NSDocument isDocumentEdited]并总是返回NO. 它部分解决了这个问题。当然,我不想处理那些东西,我想它应该固定在 undo-manager/persistent document/managed object context 方面。

有人遇到同样的问题吗?

非常感谢大家!

4

1 回答 1

0

我终于想出了一种使用撤消管理器的方法removeAllActions

- (id)initWithType:(NSString *)typeName error:(NSError *__autoreleasing *)outError`
{
    // Add your seed data in Core Data

    // Erase all actions to make the document appear as new
    [[self undoManager] removeAllActions];
}

它解决了我的所有问题,允许在不提示保存的情况下关闭文档,不显示标题上的已编辑菜单,并且不允许用户撤消种子插入操作。

于 2013-10-30T09:59:03.207 回答