You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Thread 1:解包可选值遇nil致命错误排查(MP4已加入项目)

解决AVPlayer初始化时「Unexpectedly found nil while unwrapping an Optional value」错误

你的崩溃核心原因是Bundle.main找不到指定的bump.mp4文件,强制解包!直接触发了致命错误。以下是具体排查和解决步骤:

  • 确认文件已绑定到项目目标
    选中bump.mp4文件,打开右侧「文件检查器」面板,找到「目标成员资格」区域,确保你的主App目标已经被勾选。如果没勾选,勾选后重新编译——很多时候资源没被打包进Bundle就是因为这个步骤漏了。

  • 检查文件名完全匹配
    iOS的资源查找是区分大小写的,确保代码里的"bump"和"mp4"和实际文件名完全一致,比如别把Bump.mp4写成bump.mp4。另外可以右键文件→「显示简介」,确认系统没有隐藏文件的扩展名,避免实际是bump.mp4.mp4这种情况。

  • 用安全的可选绑定替代强制解包
    不管资源是否存在,都不应该用!强制解包,改成可选绑定的写法,既能避免崩溃,还能快速定位问题:

    @State private var player: AVPlayer?
    
    var body: some View {
        VStack {
            if let player = player {
                VideoPlayer(player: player)
                    .allowsHitTesting(false)
            } else {
                Text("视频资源加载失败")
                    .foregroundColor(.red)
            }
        }
        .padding()
        .onAppear {
            guard let videoURL = Bundle.main.url(forResource: "bump", withExtension: "mp4") else {
                print("找不到bump.mp4资源")
                return
            }
            player = AVPlayer(url: videoURL)
        }
    }
    
  • 验证Bundle中是否存在该资源
    可以在onAppear里添加打印代码,查看当前Bundle里的所有mp4文件:

    print(Bundle.main.paths(forResourcesOfType: "mp4", inDirectory: nil))
    

    运行后看控制台输出,如果列表里没有bump.mp4,说明资源确实没被打包,回到第一步重新检查目标绑定。

内容的提问来源于stack exchange,提问作者kenada97

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 16:55:02