我通过自动更新代码将我的应用更新到XCode 8.2.1中的最新SWIFT版本。
现在,当我初始化变量时,我的应用程序崩溃了:
var sndAlgo1 = URL(string: "")!
override func viewDidAppear(_ animated: Bool) {
self.audioPlayer?.delegate = self
self.startAudioPlayerWithURL(self.sndAlgo1)
}
func initializeSounds() {
self.sndAlgo1 = self.createAudioFilePath("Algo1", type: "mp3")
self.sndAlgo2 = self.createAudioFilePath("Algo2", type: "mp3")
self.sndNotruf = self.createAudioFilePath("Notruf", type: "mp3")
self.sndLoop = self.createAudioFilePath("Loop", type: "mp3")
}
override func viewWillAppear(_ animated: Bool) {
self.btnEmergencyClicked = false
self.initializeSounds()
}
2017-03-25 08:18:58.718804 TUMCPR [813:153254]致命错误: 在展开可选值时意外发现nil
现在有什么不同的方式来启动这些变量吗?
答案 0 :(得分:0)
如果URL被视为常量并且声音文件位于包中,则直接在类的顶层创建URL,例如:
let sndAlgo1 = Bundle.main.url(forResource: "Algo1", withExtension: "mp3")!
let sndNotruf = Bundle.main.url(forResource: "Notruf", withExtension: "mp3")!
答案 1 :(得分:0)
由于您打开了零值(URL(string: "")
返回零值),因此出现错误。让我们像这样创建一个隐式解包的可选变量:var sndAlgo1: URL!