Изключение EXC_BAD_INSTRUCTION при възпроизвеждане на аудио в swift 2

Опитвам се да възпроизведа аудио в swift 2, но получавам грешка:

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

нещо се променя от swift 1 на 2, така че сложих фразата do catch, но сега не работи Код:

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
но след това идва съобщението: use if unresolved identifier '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 е свързан с опции за разопаковане (и други, но ...). Нещо като тази фатална грешка: неочаквано намерена нула при разопаковане на незадължителна стойност в конзолата? Ако е така, тогава проблемът е в ! - 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 ...“ в playground, същата грешка, след това добавих звуковия файл към ресурсите на playground, след което проработи. - person ; 25.07.2015