Исключение EXC_BAD_INSTRUCTION при воспроизведении звука в Swift 2

Я пытаюсь воспроизвести звук в Swift 2, но получаю сообщение об ошибке:

Thread 1: EXC_BAD_INSTRUCTION(code=EXC_I386_INVOP, subcode = 0x0)

что-то меняется с swift 1 на 2, поэтому я вставил ключевую фразу, но теперь это не работает Код:

import UIKit
import AVFoundation

class ViewController: UIViewController {

@IBOutlet weak var PausePlay: UIButton!


-->  var ButtonAudioURl = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("Tutava", ofType: "aif")!)

var ButtonAudioPlayer = AVAudioPlayer()


override func viewDidLoad() {
    super.viewDidLoad()


    do {
        ButtonAudioPlayer = try AVAudioPlayer(contentsOfURL: ButtonAudioURl)
    } catch _ {
    }
}

@IBAction func PlayAudio(sender: AnyObject) {

    ButtonAudioPlayer.play()

}
}

Кто может мне помочь? спасибо


person Community    schedule 24.07.2015    source источник
comment
Xcode - это среда разработки, не имеющая отношения к вашему вопросу. Покажите трассировку стека сбоя.   -  person trojanfoe    schedule 24.07.2015
comment
это происходит, когда я объявляю var ButtonAudioURL   -  person    schedule 24.07.2015
comment
Что, если вы инициализируете ButtonAudioURL внутри viewDidLoad?   -  person trojanfoe    schedule 24.07.2015
comment
ничего не меняется, я получаю ту же ошибку   -  person    schedule 24.07.2015
comment
Вы не можете, поскольку это объявление переменной сейчас ничего не делает. Он должен быть пуст. Удалите (бессмысленную) инициализацию ButtonAudioPlayer, а также уже инициализированную в viewDidLoad.   -  person trojanfoe    schedule 24.07.2015
comment
но затем приходит сообщение: использовать, если неразрешенный идентификатор 'ButtonAudioPlayer'?   -  person    schedule 24.07.2015
comment
Я сказал переместить инициализацию в viewDidLoad, а не удалять переменную.   -  person trojanfoe    schedule 24.07.2015
comment
затем сообщение: переменная 'ButtonAudioPlayer' была записана, но никогда не читалась   -  person    schedule 24.07.2015
comment
Это все, что есть в консоли? EXC_BAD_INSTRUCTION связан с опциями разворачивания (и другими, но...). Что-нибудь вроде этой фатальной ошибки: неожиданно найдено nil при развертывании необязательного значения в консоли? Если да, то проблема в ! - NSBundle.mainBundle().pathForResource("Tutava", ofType: "aif")! Вы уверены, что он включен в цель? Поместите print(NSBundle.mainBundle().pathForResource("Tutava", ofType: "aif")) в свой viewDidLoad и отправьте вывод консоли, когда появится ваш контроллер представления.   -  person zrzka    schedule 24.07.2015
comment
А если вы запустите свой код в Xcode, где он остановится? Какая линия?   -  person zrzka    schedule 24.07.2015
comment
Вы правы, появляется фатальная ошибка, о которой вы догадались. Поэтому я поместил строку print(NSBundle...) в ViewDidLoad, и она вернула ноль. Вы знаете проблему?   -  person    schedule 24.07.2015


Ответы (1)


Итак, наконец, я нашел проблему. Мне пришлось установить флажки «добавить в цели», когда я импортирую аудиофайл.

Большое спасибо за твою помощь.

person Community    schedule 25.07.2015
comment
Я проверил строку 'var ButtonAudioURL...' на игровой площадке, та же ошибка, затем я добавил звуковой файл в ресурсы игровой площадки, после чего все заработало. - person ; 25.07.2015