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

Store iOS app audio files app in xcassets or documents directory?

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

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

要将这些文件包含在您的应用中以便它们立即存在,它们必须是您应用资源包的一部分。您是使用资产目录还是将它们简单地存储在包中由您决定,但是无法将它们打包到文档文件夹中,因为在用户第一次使用应用程序 运行 之前没有文档文件夹.

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

当您将音频文件放入资产目录时,它可以作为数据使用,没有 URL。据我现在的理解,如果你想要 URL,你将不得不提取数据并创建一个文件,这是双重工作。

当您 URL 在您 "just" 将音频文件放入应用程序包时自动可用时,它会为您提供更多选择。就像将 AVQueuePlayer 与 AVPlayerItem 一起使用一样。 AVPlayerItem 只取一个URL,不取数据。如果你想从资产目录中一个接一个地播放音频文件,那就更麻烦了,你必须为 AVAudioPlayerDelegate 编写代码,而对于 AVQueuePlayer,你只需提供一个 AVPlayerItems 数组。

我怀疑 URL 可能会有更多优势可供参考,但我还没有看到资产目录的优势,所以我的意见可能会有所改变。