AVAudioPlayer不再适用于Swift 2.0/Xcode 7 beta

Yar*_*ika 6 beta xcode ios xcode7

对于var testAudio我的iPhone应用程序中的声明,我在这里收到错误

"调用可以抛出,但错误不能从属性初始化程序中抛出"

import UIKit
import AVFoundation
class ViewController: UIViewController {
    var testAudio = AVAudioPlayer(contentsOfURL: NSURL (fileURLWithPath: NSBundle.mainBundle().pathForResource("testAudio", ofType: "wav")!), fileTypeHint:nil)
Run Code Online (Sandbox Code Playgroud)

当我转到Xcode 7测试版时,就发生了这种情况.

如何在Swift 2.0中使用此音频剪辑?

Sea*_*anA 21

Swift 2有一个全新的错误处理系统,你可以在这里阅读更多相关内容:Swift 2错误处理.

在您的情况下,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
    }
}
Run Code Online (Sandbox Code Playgroud)

这使您有机会处理创建音频播放器时可能出现的任何错误,并会阻止Xcode向您发出警告.