2017-08-04 71 views
-3

这是我的代码我有这样的错误:“致命错误:意外发现零而展开的可选值”在Xcode 8 SWIFT 3

// 
// ViewController.swift 
// morpher app soundboard 
// 
// Created by Jared Evan Miller on 7/24/17. 
// Copyright © 2017 Jared Evan Miller. All rights reserved. 
// 

import UIKit 
import AVFoundation 

class ViewController: UIViewController { 


let soundFilenames = ["5","8","7","4","6","Sound3forbutton3","sound2forbutton1","sound2forbutton2"] 
var audioPlayers = [AVAudioPlayer]() 
var lastAudioPlayer = 0 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

    // Set up audio players 
    for sound in soundFilenames { 

     do { 

      // Try to do something 

      let url = URL(fileURLWithPath: Bundle.main.path(forResource: sound, ofType: "wav")!) 
      let audioPlayer = try AVAudioPlayer (contentsOf:url) 

      audioPlayers.append(audioPlayer) 
     } 
     catch { 

      // Catch the error that is thrown 
     audioPlayers.append(AVAudioPlayer()) 
     } 
       } 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 


@IBAction func buttonTapped(_ sender: UIButton) { 

    // Get the audioPlayer that corresponds to the button that they tapped 
    let lastPlayer = audioPlayers[lastAudioPlayer] 
    lastPlayer.stop(); 
    lastAudioPlayer = sender.tag; 
    lastPlayer.currentTime = 0; 
    let audioPlayer = audioPlayers[sender.tag] 
    audioPlayer.currentTime=0; 
    audioPlayer.play() 
} 

    @IBAction func tbuttonTapped(_ sender: UIButton) { 

    // Get the audioPlayer that corresponds to the button that they tapped 

    let lastPlayer = audioPlayers[lastAudioPlayer] 
    lastPlayer.stop(); 
    lastAudioPlayer = sender.tag; 
    lastPlayer.currentTime = 0; 
    let audioPlayer = audioPlayers[sender.tag] 
    audioPlayer.currentTime=0; 
    audioPlayer.play() 
} 

} 

我该如何解决这个问题?

此外,我得到这个错误。这是代码中的一部分。看看我改变了什么。它有我在iPhone上运行它的错误。

![我的代码] [2]

[2]: https://i.stack.imgur.com/V5WC3.png 请帮助!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !

回答

0

你是强制解开Budle.main.path的结果...,因为这是失败它意味着你的资源没有正确加载。

确保您的声音文件与您的应用程序捆绑在一起。您可以通过转到您的项目设置来检查这一点,然后在“构建阶段”下将这些文件添加到“复制包资源”部分(如果它们尚未存在)。

for sound in soundFilenames { 

    guard let urlString = Bundle.main.path(forResource: sound, ofType: "wav") else { 

     print("Sound file not found: \(sound)") 

     continue 
    } 

    let url = URL(fileURLWithPath:urlString) 

    do { 

     // Try to do something 
     let audioPlayer = try AVAudioPlayer (contentsOf:url) 

     audioPlayers.append(audioPlayer) 
    } 
    catch { 

     // Catch the error that is thrown 
     audioPlayers.append(AVAudioPlayer()) 
    } 
} 
相关问题