将iOS应用程序音频文件应用程序存储在xcassets或文档目录中?
如果应用程序需要数百个音频文件(它们很小,5-25KB),将它们放在资产目录或文档目录中会更好吗?我已经尝试了这两种方法,但它们看起来并没有太大差别,无论是哪种方式管理项目导航器中的数百个文件都很麻烦,而且它们都是相同的应用程序文件大小。将iOS应用程序音频文件应用程序存储在xcassets或文档目录中?
到目前为止,我发现一件事影响了是否将音频文件放在应用程序包中,或将其放入应用程序包的资产目录部分。
将音频文件放入资产目录中时,它可用作数据,但没有URL。据我现在了解,如果你想要一个URL,你必须提取数据并创建一个文件,这是双重工作。
如果您只有在将音频文件放入应用程序包中时可以自动获取URL,它会为您提供更多选项。就像在AVPlayerItem中使用AVQueuePlayer一样。 AVPlayerItem只需要一个URL,而不是数据。如果您想要从资产目录中一个接一个地播放音频文件,那么需要更多的工作,您必须为AVAudioPlayerDelegate编写代码,而使用AVQueuePlayer时,您只需提供一个AVPlayerItems数组。
我怀疑可能有更多的优点有一个可以参考的URL并且没有看到资产目录的优势,所以我的观点可能会有所变化。
由于您希望将音频文件与应用程序捆绑在一起,因此无法使用“文档”文件夹。 Documents文件夹的使用是一个运行时功能,只能在您的应用程序从App Store安装并由用户运行后才能使用。
要将这些文件包含在您的应用程序中以便它们立即存在,它们必须是应用程序资源包的一部分。无论是使用资产目录还是简单地将它们存储在软件包中,都取决于您,但无法将它们打包到Documents文件夹中,因为在用户首次运行该应用程序之前没有Documents文件夹。
我的错误,出于某种原因,当我将音频文件复制到项目导航器中时,我认为它创建了文档目录中的文件。它是捆绑的一部分。那么在捆绑和目录中是否有区别? – Steve
您希望将这些文件与您的应用程序一起使用,以便在用户首次安装应用程序时使用这些文件?或者当用户第一次运行你的应用时,你的应用下载的这些文件是? – rmaddy
你确定你是指文件目录吗?这是一个读/写目录,它是在第一次启动应用程序时创建的,为空。资产目录是只读的,它的内容存储在应用程序包中。如果这些声音文件随应用程序一起提供,那么您必须将它们从软件包中复制到文档目录中,如果这是您想要保留它们的地方。 –
@rmaddy,这些文件包含在应用程序中。 – Steve