AVAudioPlayer 不再在 Swift 2.0 / Xcode 7 beta 中工作
AVAudioPlayer no longer working in Swift 2.0 / Xcode 7 beta
对于我的 iPhone 应用程序中的 var testAudio
声明,我在此处收到错误消息
"Call can throw, but errors cannot be thrown out of a property initializer"
import UIKit
import AVFoundation
class ViewController: UIViewController {
var testAudio = AVAudioPlayer(contentsOfURL: NSURL (fileURLWithPath: NSBundle.mainBundle().pathForResource("testAudio", ofType: "wav")!), fileTypeHint:nil)
当我转到 Xcode 7 beta 时发生了这种情况。
如何让此音频剪辑在 Swift 2.0 中正常运行?
Swift 2 有一个全新的错误处理系统,您可以在这里阅读更多相关信息:Swift 2 Error Handling.
在您的情况下,AVAudioPlayer
构造函数可能会引发错误。 Swift 不会让你使用在 属性 初始化器中抛出错误的方法,因为那里没有办法处理它们。相反,在视图控制器的 init
之前不要初始化 属性。
var testAudio:AVAudioPlayer;
init() {
do {
try testAudio = AVAudioPlayer(contentsOfURL: NSURL (fileURLWithPath: NSBundle.mainBundle().pathForResource("testAudio", ofType: "wav")!), fileTypeHint:nil)
} catch {
//Handle the error
}
}
这让您有机会处理创建音频播放器时可能出现的任何错误,并且会停止 Xcode 向您发出警告。
如果您知道不会返回错误,您可以尝试添加!事先:
testAudio = try! AVAudioPlayer(contentsOfURL: NSURL (fileURLWithPath: NSBundle.mainBundle().pathForResource
适用于 Swift 2.2
但是不要忘记将fileName.mp3添加到项目Build phases->Copy Bundle Resources(右键单击项目根目录)
var player = AVAudioPlayer()
func music()
{
let url:NSURL = NSBundle.mainBundle().URLForResource("fileName", withExtension: "mp3")!
do
{
player = try AVAudioPlayer(contentsOfURL: url, fileTypeHint: nil)
}
catch let error as NSError { print(error.description) }
player.numberOfLoops = 1
player.prepareToPlay()
player.play()
}
对于我的 iPhone 应用程序中的 var testAudio
声明,我在此处收到错误消息
"Call can throw, but errors cannot be thrown out of a property initializer"
import UIKit
import AVFoundation
class ViewController: UIViewController {
var testAudio = AVAudioPlayer(contentsOfURL: NSURL (fileURLWithPath: NSBundle.mainBundle().pathForResource("testAudio", ofType: "wav")!), fileTypeHint:nil)
当我转到 Xcode 7 beta 时发生了这种情况。
如何让此音频剪辑在 Swift 2.0 中正常运行?
Swift 2 有一个全新的错误处理系统,您可以在这里阅读更多相关信息:Swift 2 Error Handling.
在您的情况下,AVAudioPlayer
构造函数可能会引发错误。 Swift 不会让你使用在 属性 初始化器中抛出错误的方法,因为那里没有办法处理它们。相反,在视图控制器的 init
之前不要初始化 属性。
var testAudio:AVAudioPlayer;
init() {
do {
try testAudio = AVAudioPlayer(contentsOfURL: NSURL (fileURLWithPath: NSBundle.mainBundle().pathForResource("testAudio", ofType: "wav")!), fileTypeHint:nil)
} catch {
//Handle the error
}
}
这让您有机会处理创建音频播放器时可能出现的任何错误,并且会停止 Xcode 向您发出警告。
如果您知道不会返回错误,您可以尝试添加!事先:
testAudio = try! AVAudioPlayer(contentsOfURL: NSURL (fileURLWithPath: NSBundle.mainBundle().pathForResource
适用于 Swift 2.2
但是不要忘记将fileName.mp3添加到项目Build phases->Copy Bundle Resources(右键单击项目根目录)
var player = AVAudioPlayer()
func music()
{
let url:NSURL = NSBundle.mainBundle().URLForResource("fileName", withExtension: "mp3")!
do
{
player = try AVAudioPlayer(contentsOfURL: url, fileTypeHint: nil)
}
catch let error as NSError { print(error.description) }
player.numberOfLoops = 1
player.prepareToPlay()
player.play()
}