将iOS应用程序音频文件应用程序存储在xcassets或文档目录中?

时间:2016-12-13 18:47:26

标签: ios audio avfoundation nsdocumentdirectory xcasset

如果一个应用程序需要数百个音频文件(它们很小,5-25KB),将它们放在资产目录或文档目录中会更好吗?我尝试了两种方法并且它们似乎没有太大的不同,无论是哪种方式管理项目导航器中的数百个文件都是一种痛苦,而且两者都是相同的应用程序文件大小。

2 个答案:

答案 0 :(得分:4)

由于您希望将音频文件与应用程序捆绑在一起,因此无法使用“文档”文件夹。使用Documents文件夹是一种运行时功能,只有在您的应用程序从App Store安装并由用户运行后才能使用。

要将文件包含在您的应用中以便它们立即存在,它们必须是您应用的资源包的一部分。无论您使用资产目录还是仅将它们存储在捆绑包中都取决于您,但由于在用户第一次运行应用程序之前没有Documents文件夹,因此无法将它们打包到Documents文件夹中

答案 1 :(得分:3)

到目前为止,我发现有一件事会影响是否只是"只是"将音频文件放入应用程序包中或将其放入应用程序包的资产目录部分。

当您将音频文件放入资产目录中时,它可用作数据,但没有网址。据我所知,如果你想要一个URL,你必须提取数据并创建一个文件,这是双重工作。

当您有一个可以自动使用的网址时,只需"只是"将音频文件放入应用程序包中,它为您提供了更多选择。就像在AVPlayerItem中使用AVQueuePlayer一样。 AVPlayerItem只接受URL,而不是数据。如果你想从资产目录中一个接一个地播放音频文件,那么你需要为AVAudioPlayerDelegate编写代码,而使用AVQueuePlayer,你只需要提供一个AVPlayerItem数组。

我怀疑使用URL引用可能会有更多优势,而且我没有看到资产目录的优势,所以我的意见可能会发生变化。