2011-05-08 86 views
0

基于NSDocument的应用程序与“NoSuchFileError”崩溃。非常简单 - 两个实体,具有一对多的关系。这个应用程序与保存,加载等工作完全CoreData具有自动保存保存一日一次,然后在下面的所有使用自动保存CoreData

然后我打开自动保存这样的:

[[NSDocumentController sharedDocumentController] setAutosavingDelay:0.1]; 

...并立即去可怕的错误。正确

第一个自动保存工作,100%。即它保存在用户的私有目录中的文件,如果你退出程序,并重新启动时,自动保存,自动文档重新打开。凉!

但是,只要您对数据的第二变化,你会得到一个崩溃自动保存,这一点:

error = Error Domain=NSCocoaErrorDomain Code=134030 UserInfo=0x1001a1be0 "An error occurred while saving." 
Underlying Error=(Error Domain=NSCocoaErrorDomain Code=4 UserInfo=0x10019a840 "The file doesn’t exist." 
Underlying Error=(Error Domain=NSPOSIXErrorDomain Code=2 UserInfo=0x100150d00 "The operation couldn’t be completed. No such file or directory")) 

...这是没有意义的我。为什么会自动*保存*关心文件是否存在?它为什么会第一次工作,然后在随后的时间失败?

注:我查过,而苹果attemtps使用相同的文件名第二自动保存通话 - 如果它的工作第一次,为什么后来失败0.5秒???

回答

1

你为什么试图自动保存每秒10次?这太经常了。实际保存文件可能需要超过十分之一秒。一个理智的价值将是10秒,这可能是更频繁的超过实际需要。

+0

我对文档的理解是,当它保存时,它不会再自动保存(除非在保存时修改了一些数据)。 0.1秒是为了加快测试/调试速度,我认为它不会影响储蓄是否有效 - 你认为这是什么原因? – Adam 2011-05-09 09:51:40

0

在行之间读取,这似乎是Apple使用NSDocument实现核心数据的已知缺陷:自动保存已损坏,并且他们不打算修复它。

从NSPersistentDocument(当你在创建项目时选择核心数据和NSDocument所使用NSDocument的子类):

“另存为...”并自动保存不 直接支持核心数据不能 保存到商店并保持在被管理对象 上下文中更改的状态相同,同时将未保存的堆栈保留为当前文档 。

有趣宣称“核心数据不能......” - 当然,CD“可以”做到这一点,但我可以看到它可能是一个大量的代码,并通过跳火圈,使其工作。听起来更像是一个借口,而不是解释。