【问题标题】:No such file or directory but file exists Xcode没有这样的文件或目录,但文件存在 Xcode
【发布时间】:2026-01-24 07:05:01
【问题描述】:

我的应用中有音频文件。

我可以收听其中的任何一个,但我无法运行应用程序。 Xcode 写“没有这样的文件或目录”。 这是错误和文件路径。

我尝试删除 Xcode/Derived Data,但它不起作用,并且在 Copy Bundle Resources 中没有红色文件。

【问题讨论】:

    标签: ios swift xcode


    【解决方案1】:

    iOS 应用程序可以访问在归档期间捆绑到其 Bundle 中的资源,或者访问其 SandBox 中存在的资源(以编程方式下载并保存在 sandBox 的 document/temp 文件夹中的资源)。您的音频文件位于 Mac 的 Desktop 上,iOS 应用无法访问它们。

    我该怎么办?

    在你的 Xcode 中选择这些项目的条目,删除它们(只删除参考而不是原始文件)

    现在返回桌面,选择项目并将其拖到您的项目中,然后在复制时选择如果需要复制项目

    这会将项目复制到您的应用程序包中,现在您可以访问它了:)

    免费咨询

    这是一种将音频文件(假设音频文件很大,因为我没有关于您的音频文件大小的上下文)复制到您的应用程序包的可怕编码方法:|这将扩大您的应用程序大小,考虑更具可扩展性的方法,例如从服务器动态下载(延迟下载、后台下载,或者如果您正在流式传输 m3U8 格式等)

    【讨论】:

    • 感谢您的解决方案和建议,但此应用必须离线运行,并且音频文件非常小。有可能吗?
    • @sam:你可以下载和缓存音频文件以便能够离线工作,显然至少在第一次播放资源时需要互联网,你可以使用 AVAssetResourceLoader 流式传输和同时下载:D 所以当用户返回应用程序尝试再次播放音频时,它将从缓存中播放并且不会下载任何新内容。
    • 我假设它也可以在线工作。因此,建议在用户在线时下载这些文件,然后在本地保存以获取离线支持,而不是与应用程序捆绑在一起。这样,即使手机上的应用体积很大,但在第一次安装时它会更薄。
    • 就我个人而言,我认为您完全可以将资产与您的应用程序捆绑在一起。我的意思是来吧,你只有几个音效文件。我们不是在这里谈论数百 MB。这是很多额外的不必要的优化。为什么要进行所有下载/后台下载、缓存、CDN 以减少几 MB。不要过早优化。只有在有意义的时候才能跨过那座桥。
    • @peter-parker:这是一般建议,如果它是用于游戏的非常小的音频剪辑或用于通知的自定义音频,则可以,因为我们不确定音频文件的大小我建议它作为一般经验法则:+1
    最近更新 更多