gpt4 book ai didi

cocoa - 如何让基于 NSDocument 的应用程序打开文件夹,但将关联的文档保存到应用程序支持?

转载 作者:行者123 更新时间:2023-12-03 16:21:39 25 4
gpt4 key购买 nike

在我的基于 NSDocument 的应用程序中,我的文档将与目录关联(它们是目录的索引)

我希望能够根据以下用例打开/保存文档:

  1. 打开目录:a) 如果文件夹中有.myapp文件,打开它b) 否则查看 ~/Library/Application Support/MyApp 中是否有 HASH-OF-PATH-basename.myapp 文件并打开该文件b) 否则在内存中创建一个新文档

  2. 照常打开 xxx.myapp 文件

  3. 保存/自动保存a) 如果当前文档的源是 1b、1c 或 2,则将文件保存到 ~/Library/Application Support/MyApp/HASH-OF-PATH-basename.myappb) 如果当前文档的源是 1a,则保存到该 .myapp 文件

  4. 另存为/另存到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."

最佳答案

事实证明,这个问题很容易解决。

我覆盖了 saveToURL:ofType:forSaveOperation:error: 并根据 SaveOperation 类型进行了 url 和类型交换。

现在一切都按预期进行。

关于cocoa - 如何让基于 NSDocument 的应用程序打开文件夹,但将关联的文档保存到应用程序支持?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7135814/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com