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
相关产品推荐
相关产品推荐

