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

时间:2011-08-21 01:38:16

标签: cocoa macruby

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

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

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

  2. 正常打开xxx.myapp文件

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

  4. 另存为/另存为 b)将xxxxx.myapp保存到用户指定的任何地方

  5. 显而易见的事情似乎只是实现readFromURL:ofType:error:L和writeToURL:ofType:forSaveOperation:originalContentsURL:error:并根据saveoperation的内容根据需要切换URL。

    这样可以打开文件和文件夹,当我保存一个打开的文件夹时,我的文件会保存到Application Support,但之后是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 个答案:

答案 0 :(得分:1)

事实证明这很容易解决。

我覆盖了saveToURL:ofType:forSaveOperation:error:并且做了url&在那里根据SaveOperation类型进行类型交换。

现在情况正如预期的那样。