【问题标题】:Swift(xcode 9: code works in tutorial video):unexpectedly found nil while unwrapping an Optional valueSwift(xcode 9: code works in tutorial video): unwrapping an Optional value 时意外发现 nil
【发布时间】:2017-08-31 07:52:42
【问题描述】:

我正在按照网站上的视频学习编码,该代码在视频中有效,但在我的笔记本电脑上无效。我检查了几次我和视频中的人做同样的编码,有人可以帮我检查我的代码,非常感谢! (Xcode 9)

import UIKit
import AVFoundation

class ViewController: UIViewController {


@IBOutlet weak var darkBlueBG: UIImageView!
@IBOutlet weak var powerBtn: UIButton!
@IBOutlet weak var cloudHolder: UIView!
@IBOutlet weak var rocket: UIImageView!
@IBOutlet weak var hustleLbl: UILabel!
@IBOutlet weak var onLbl: UILabel!

var player: AVAudioPlayer!

override func viewDidLoad() {
    super.viewDidLoad()

    let path = Bundle.main.path(forResource: "hustle-on", ofType: "wav")!
    let url = URL(fileURLWithPath: path)
    do{
        player = try AVAudioPlayer(contentsOf: url)
        player.prepareToPlay()
    }catch let error as NSError {
        print(error.description)
    }

}


@IBAction func powerBtnPressed(_ sender: Any) {
    cloudHolder.isHidden = false
    darkBlueBG.isHidden = true
    powerBtn.isHidden = true
    UIView.animate(withDuration: 2.3, animations: {
       self.rocket.frame = CGRect(x: 0, y: 100, width: 375, height: 435)
    }) { (finished) in
        self.hustleLbl.isHidden = false
        self.onLbl.isHidden = false
    }
}
}

【问题讨论】:

  • 检查您的IBOutlets 是否已连接
  • 应用程序在哪一行崩溃?
  • 你能告诉我们代码中的哪一行触发了强制展开错误吗?您可以使用保护语句来防止它。
  • 试试?代替 !对于所有变量,它可能看起来有些是 nil 并且强制展开。
  • @Usss 这意味着你的项目包中不存在“hustle-on.wav”文件。

标签: ios swift fatal-error


【解决方案1】:

确保您的 IBOutlets 已连接。您可以通过查看它们旁边的排水沟并右键单击出现的圆圈来做到这一点。如果它们未连接,请转到您的情节提要并删除半连接,然后重新添加。

否则,使用

guard let path = Bundle.main.path(forResource: "hustle-on", ofType: "wav")
else {
return
}

我认为这是发生错误的地方。

【讨论】:

  • 您好,非常感谢您对 alec935 的帮助。我检查了所有的 IBOutlets 并且它们都已连接,并且“保护”代码不起作用。
  • 没问题。在 else { 之后输入你想运行的代码,如果守卫失败。如果展开的对象为 nil,则 Guard 用于提供强制展开的替代方法。
【解决方案2】:

感谢您的cmets,当我查找所有信息时,我发现音频没有被选为项目的成员。现在可以使用 =)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-04
    • 1970-01-01
    相关资源
    最近更新 更多