Xcode 尝试在Swift中播放声音时出现致命错误
我已经完成了本教程。最后要做的一件事是让按钮在按下时发出声音。然后我想继续使用同样的逻辑来制作一个声卡应用程序。然而,当我在一个新的项目中,除了制造噪音之外,还剥离了一些非必要的部分时,我开始犯一个致命的错误 这是我的ViewController.swfit文件:Xcode 尝试在Swift中播放声音时出现致命错误,xcode,swift,avaudioplayer,Xcode,Swift,Avaudioplayer,我已经完成了本教程。最后要做的一件事是让按钮在按下时发出声音。然后我想继续使用同样的逻辑来制作一个声卡应用程序。然而,当我在一个新的项目中,除了制造噪音之外,还剥离了一些非必要的部分时,我开始犯一个致命的错误 这是我的ViewController.swfit文件: import UIKit import AVFoundation class ViewController: UIViewController { var sample : AVAudioPlayer? func s
import UIKit
import AVFoundation
class ViewController: UIViewController {
var sample : AVAudioPlayer?
func setupAudioPlayerWithFile(file:NSString, type:NSString) -> AVAudioPlayer? {
//1
let path = NSBundle.mainBundle().pathForResource(file as String, ofType: type as String)
let url = NSURL.fileURLWithPath(path!)
//2
var audioPlayer:AVAudioPlayer?
// 3
do {
try audioPlayer = AVAudioPlayer(contentsOfURL: url)
} catch {
print("Player not available")
}
return audioPlayer
}
override func viewDidLoad() {
super.viewDidLoad()
if let sample = self.setupAudioPlayerWithFile("Stomach", type:"aif") {
self.sample = sample
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func buttonPressed() {
sample?.play()
}
}
这是致命错误出现时我的项目
我也试过,但也有错误
我正在使用Xcode 7.3运行El Capitan 10.11.3,您的项目中是否包含名为“gast.aif”的音频文件?否则,
pathForResource
将返回nil,并且在尝试强制展开该路径时将崩溃。你可以使用这个函数的一个更安全的版本,尽管如果它找不到那个文件,它仍然不会播放好的一面,它应该不会崩溃
func setupAudioPlayerWithFile(file:NSString, type:NSString) -> AVAudioPlayer? {
var audioPlayer:AVAudioPlayer? = nil
if let path = NSBundle.mainBundle().pathForResource(file as String, ofType: type as String) {
let url = NSURL.fileURLWithPath(path)
do {
try audioPlayer = AVAudioPlayer(contentsOfURL: url)
} catch {
print("Player not available")
}
}
return audioPlayer
}
您是否在项目中包含名为“gast.aif”的音频文件?否则,
pathForResource
将返回nil,并且在尝试强制展开该路径时将崩溃。你可以使用这个函数的一个更安全的版本,尽管如果它找不到那个文件,它仍然不会播放好的一面,它应该不会崩溃
func setupAudioPlayerWithFile(file:NSString, type:NSString) -> AVAudioPlayer? {
var audioPlayer:AVAudioPlayer? = nil
if let path = NSBundle.mainBundle().pathForResource(file as String, ofType: type as String) {
let url = NSURL.fileURLWithPath(path)
do {
try audioPlayer = AVAudioPlayer(contentsOfURL: url)
} catch {
print("Player not available")
}
}
return audioPlayer
}
好消息和坏消息。这可以工作并且不会使应用程序崩溃(耶!)。然而,我确实有音频文件复制到我的项目,但它仍然没有播放它。我会继续努力,看看这是否是我在按键部分犯的错误。但那个func似乎起作用了它起作用了!结果是。不支持aif。使用了.mp3,效果很好。非常感谢!好消息和坏消息。这可以工作并且不会使应用程序崩溃(耶!)。然而,我确实有音频文件复制到我的项目,但它仍然没有播放它。我会继续努力,看看这是否是我在按键部分犯的错误。但那个func似乎起作用了它起作用了!结果是。不支持aif。使用了.mp3,效果很好。非常感谢!