我目前正在为我正在尝试创建的文档制定最佳结构。该文档基本上是使用 sqlite 作为其存储的核心数据文档,但使用 Apple 提供的 NSPersistentDocument+FileWrapperSupport 来启用文件包装器支持。
该文档大量使用媒体,例如图像、视频、音频文件等,可能包含 1000 多个文件。所以我想做的是创建一个类似于以下的结构:
/myfile.ext/
/myfile.ext/store.sqlite
/myfile.ext/content/
/myfile.ext/content/images/*
/myfile.ext/content/videos/*
/myfile.ext/content/audio/*
现在,首先我创建了一个临时目录并将我的所有媒体都放在那里。基本上创建路径和文件名'/content/images/image1.jpg',因为我希望它们出现在保存的文件包装器中,然后在保存时我试图将这些全部复制到文件包装器中......
我发现这些文件确实以我想要的文件结构复制到了包装器中,但是当实际的包装器被保存时,这些文件都神奇地消失了。
伟大的。
所以,我废弃了我现有的解决方案并尝试使用文件包装器。该解决方案涉及在创建新文档时创建内容包装文件目录,或在打开文档时加载内容目录文件包装。
添加/修改图像时,我在此根内容包装器中创建了必要的目录包装器(即图像目录包装器,如果它不存在,或任何其他需要创建的中间目录包装器),然后创建一个常规媒体的文件包装器,删除该文件名的任何现有包装器(如果存在)。
保存文档只是确保将内容文件包装器添加到文档文件包装器的情况,并且文档将保存。
嗯……确实如此。第一次。但是,任何尝试进行任何后续更改,即添加图像,保存。然后替换图像,保存。未按预期运行,仅显示第一次保存的图像。
所以,我的问题是......首先,上述哪种方法是正确的,如果有的话,我做错了什么让他们失败。
其次,正如我期望管理 1000 张图像一样,使用文件包装器是处理事情的正确方式。