搜索这篇文章的标题会发现它很常见;确实,我从 Xcode 得到了这个错误。但我似乎找不到任何修复方法。我现在在运行程序时看到它,它似乎发生在调用 changeCountTokenForSaveOperation 期间或之后。它似乎与撤消管理器有关,而不是与我使用核心数据的事实有关,但我可能错了。
有谁知道这是什么原因或如何解决它?
搜索这篇文章的标题会发现它很常见;确实,我从 Xcode 得到了这个错误。但我似乎找不到任何修复方法。我现在在运行程序时看到它,它似乎发生在调用 changeCountTokenForSaveOperation 期间或之后。它似乎与撤消管理器有关,而不是与我使用核心数据的事实有关,但我可能错了。
有谁知道这是什么原因或如何解决它?
managedObjectContext
当您在NSPersistentDocument 类的代码中执行手动保存时,NSPersistentDocument 可能会发生此错误。这里的问题是您正在修改 NSPersistentDocument 背后的磁盘上的文档。只需将保存操作留给 NSPersistentDocument,就不会发生错误。
问题是手动保存 managedObjectContext。所以正确的解决方案是避免手动保存。如果无法避免,可以重写 NSDocument 的 fileModificationDate 方法,返回文件当前的文件修改日期。这样,文档不会显示错误消息。
- (NSDate *)fileModificationDate {
NSFileManager *fileManager = [NSFileManager defaultManager];
NSDictionary *attrs = [fileManager attributesOfItemAtPath:self.fileURL.path error:NULL];
return attrs[NSFileModificationDate];
}
我认为这与您可以通过单击方法名称来导航到其他文件的事实有关。如果您在一个文件中进行更改,然后导航到另一个文件,则会留下前一个窗口。您可以单击“返回”三角形再次到达它(位于文件窗口左上角的正上方)。但是,如果它在那个现在黯然失色的窗口中有未保存的更改,并且您在不同的选项卡或窗口中再次编辑相同的文件,XCode 会询问您要保留上述消息中的哪一个。
发生这种情况时,我将磁盘上的文件复制到一个新名称,然后选择“仍然保存”并比较这两个文件。不幸的是,有时每个文件中都有重要的更改,我必须手动合并它们。
我对此感到非常沮丧,我想哭。