【发布时间】:2011-08-21 01:38:15
【问题描述】:
在我的基于 NSDocument 的应用程序中,我的文档将与目录相关联(它们是目录的索引)
我希望能够根据以下用例打开/保存文档:
打开一个目录: a) 如果文件夹中有 .myapp 文件,打开它 b) 否则查看 ~/Library/Application Support/MyApp 中是否有 HASH-OF-PATH-basename.myapp 文件并打开它 b) 否则在内存中创建一个新文档
正常打开 xxx.myapp 文件
保存/自动保存 a) 如果当前文档的来源是 1b、1c 或 2,则将文件保存到 ~/Library/Application Support/MyApp/HASH-OF-PATH-basename.myapp b) 如果当前文档的来源是 1a,则保存到该 .myapp 文件
另存为/保存到 b) 将 xxxxx.myapp 保存到用户指定的任何位置
显而易见的事情似乎只是实现 readFromURL:ofType:error:L 和 writeToURL:ofType:forSaveOperation:originalContentsURL:error: 并根据保存操作的内容根据需要切换 URL。
这样我可以打开文件和文件夹,当我保存打开的文件夹时,我的文件会保存到应用程序支持,但是在 writeToURL:ofType:forSaveOperation:originalContentsURL:error 之后出现错误并显示一个对话框以下错误:
NSDocument could not delete the temporary item at
file://localhost/private/var/folders/6P/6PNpIB-6HreGE+Ikqf5dWU+++TI/
-Tmp-/TemporaryItems/(A%20Document%20Being%20Saved%20By%20MyApp%203)
/SomeDirectory.
Here's the error:
Error Domain=NSCocoaErrorDomain Code=4 UserInfo=0x200583a00
"“SomeDirectory” couldn’t be removed."
【问题讨论】:
-
+1 因为 NSDocument 是一头奇怪的野兽 :)
-
这很奇怪,但我猜可可在 saveToURL 和 writeToURL 之间做了一些事情。也许它与使保存原子或“安全”有关?我想知道当你覆盖 writeTOURL 时你是否会丢失它?