Segue错误:由于未捕获的异常'NSUnknownKeyException'

时间:2018-05-18 11:52:40

标签: ios swift avfoundation segue avkit

我试图按下按钮打开Segue。在我添加此代码之前,它已经有效但在添加代码(通过单击按钮触发视频的代码)之后,代码崩溃了我的应用程序,出现以下错误:

  

由于未捕获的异常'NSUnknownKeyException原因:'[setValue:forUndefinedKey:]:此类与密钥fatB不符合密钥值编码。

我搜索了错误,我理解它的意思是Xcode找不到某个名字(fatB) 但我无法理解其余部分。

以下是我的代码:

viewcontroller1代码:

import UIKit

class ViewController: UIViewController {
    @IBAction func movieB(_ sender: Any) {
        performSegue(withIdentifier: "firstsegue", sender: self)
    }

    @IBOutlet weak var winnerLabel: UILabel!
}

viewcontroller2代码:

import UIKit
import AVKit
import AVFoundation

class ViewController2: UIViewController {

    func forbutton(name : String, type : String)  {
        func viewDidAppear(_ animated: Bool) {
            super.viewDidAppear(animated)
            playVideo(name: name, type: type)
        }
    }

    private func playVideo(name : String, type : String) {
        guard let path = Bundle.main.path(forResource: "\(name)", ofType:"\(type)") else {
            debugPrint("video not found")
            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(name: "fatB", type: "mp4")
    }

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

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

2 个答案:

答案 0 :(得分:1)

检查连接检查员。有一个名为fatB的IBOutlet。从那里删除

它可能是一个UIButton

答案 1 :(得分:0)

可能是因为:

1)您已从代码中删除IBOutlet,但未从Controller's scene中的Storyboard删除。

2)您可能更改了IBOutlet引用变量的名称。

请检查故事板中的Controller's scene并删除未使用的IBOutlet引用,或使用新的引用变量名称进行更新。