我试图建立一个简单的声音应用程序。我想要一个按钮来播放一个非常像音板的剪辑。问题是,当我去构建它时,类“ViewController”没有初始化器
import UIKit
import AVFoundation
class ViewController: UIViewController {
var audioPlayer: AVAudioPlayer
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func playSound(sender:UIButton){
// Set the sound file name & extention
let audioFilePath = Bundle.main.path(forResource: "emp_learntoknow", ofType: "mp3")
if audioFilePath != nil {
let audioFileUrl = URL.init(fileURLWithPath: audioFilePath!)
do {
audioPlayer = try AVAudioPlayer(contentsOf: audioFileUrl)
audioPlayer.play()
} catch {
print("audio file is not found")
}
}
}
答案 0 :(得分:12)
因为它没有初始化器。你有一个房产:
var audioPlayer: AVAudioPlayer
...但你没有初始化它。当然,您有一个类型,但类型不是值。所有属性都必须具有初始值。
答案 1 :(得分:5)
就像马特提到的那样,它正在发生,因为该属性未初始化。
在Swift中,您必须在任何时候使用可能为nil
的变量的选项。您必须从头开始初始化audioPlayer
或使用可选类型,包括隐式展开的可选项,如果您知道它将在稍后设置并保持这种状态。