我尝试在已经为 Snow Leopard 编写的应用程序中实现版本。它是一个基于文档的应用程序,具有 SQLite 存储。每个文档都保存为一个 SQLite db 文件。
我在 NSPersistentDocument 子类中实现了适当的方法:
+ (BOOL)autosavesInPlace {return YES;}
+ (BOOL)preservesVersions {return YES;}
现在我在应用程序中有新的文件菜单,带有“保存版本”等。我在我的应用程序中创建新文档,保存它,进行一些更改,再次保存..当我进入版本浏览器时,我得到:
kCGErrorFailure: CGSDisplayID: App trying to enumerate [0 to CGSGetNumberOfDisplays()] instead of using CGSGetDisplayList(). Compensating...
kCGErrorFailure: Set a breakpoint @ CGErrorBreakpoint() to catch errors as they are logged.
在版本列表中版本浏览器的右侧,我看到几个版本,但它们没有显示在窗口堆栈中。看起来窗口在堆栈中但完全透明。当我点击列表中的任何版本时,我会得到日志:
CoreData: error: (8) attempt to write a readonly database
如果我尝试恢复其中一个版本 - 版本浏览器通常关闭,没有窗口出现并且程序停止响应。
我无法理解这一切意味着什么。是保存版本还是恢复的问题?我只是没有想法。将不胜感激任何帮助。