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

Segue跳转崩溃:NSUnknownKeyException异常(找不到fatB)求助

解决「NSUnknownKeyException:类不兼容键fatB的键值编码」问题

嘿,这个报错我太熟悉了!本质就是你的Storyboard(或XIB)和Swift代码之间的连接出了问题,再加上你代码里还有个致命的语法错误,咱们一步步来搞定:

第一步:先修复代码里的严重错误

先看你的ViewController2代码——你居然把iOS生命周期方法viewDidAppear嵌套在了自定义的forbutton函数里!这完全不符合Swift的语法规范,会导致系统无法正确识别类的方法,进而触发键值编码的异常。我帮你修正了代码:

import UIKit
import AVKit
import AVFoundation

class ViewController2: UIViewController {

    // 把生命周期方法放到类的顶层,这才是正确的写法
    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        // 如果需要页面出现时自动播放视频,可以在这里调用playVideo,否则留空就行
    }

    private func playVideo(name : String, type : String) {
        guard let path = Bundle.main.path(forResource: name, ofType: type) else {
            debugPrint("视频文件没找到:\(name).\(type)")
            return
        }
        let player = AVPlayer(url: URL(fileURLWithPath: path))
        let playerController = AVPlayerViewController()
        playerController.player = player
        present(playerController, animated: true) {
            player.play()
        }
    }

    @IBAction func fatB(_ sender: Any) {
        // 直接调用播放方法就行,不需要中间的forbutton函数
        playVideo(name: "fatB", type: "mp4")
    }

    @IBAction func coderB(_ sender: Any) {
        playVideo(name: "birdC", type: "mp4")
    }

    @IBAction func clashB(_ sender: Any) {
        playVideo(name: "clash", type: "mp4")
    }
}

第二步:检查Storyboard的连接

代码修好后,还得确保界面和代码的连线是对的:

  • 打开你的Storyboard,找到ViewController2对应的页面
  • 选中那个叫fatB的按钮,打开右侧的Connections Inspector(就是右上角那个箭头图标)
  • 看看Touch Up Inside的连线有没有红色感叹号,或者是不是连到了一个不存在的方法上——如果有,删掉这个无效连接,重新从按钮拖拽到代码里的fatB(_:)方法上
  • 顺便确认一下ViewController2的File's Owner是不是正确设置成了ViewController2类,别选错了别的类

最后再检查个小细节

确保你的视频文件fatB.mp4、birdC.mp4、clash.mp4真的加到项目里了,而且在Build Phases -> Copy Bundle Resources列表里能找到它们,不然播放的时候会报“video not found”的错误哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:52:48