Инициализатором для AVAudioPlayer объявлен как:
init!(contentsOfURL url: NSURL!,
error outError: NSErrorPointer)
, который из-за !
типа спецификатор означает, что a nil
v alue может быть возвращен. Кроме того, документация подразумевает, что nil
будет возвращен, если URL-адрес не ссылается на допустимые аудио ресурсы: «Аудиоданные должны быть в формате, поддерживаемом Core Audio. Список поддерживаемых форматов см. В разделе Использование аудио в руководстве по программированию мультимедиа «.
Что касается вашей ошибки, если вы объявите player
в AVAudioPlayer
(без ?
спецификатор типа а), то при nil
фактически возвращено, вы получите ваши ошибки/со смертельным исходом.
27> class Foo {
28. var player : AVAudioPlayer
29. init() {
30. self.player = AVAudioPlayer (contentsOfURL: url, error: &error)
31. }
32. }
33> Foo()
fatal error: unexpectedly found nil while unwrapping an Optional value
Execution interrupted. Enter Swift code to recover and continue.
Enter LLDB commands to investigate (type :help for assistance.)
Чтобы 'исправить' проблемы, объявить player
как:
var player : AVAudioPlayer!
и в init()
убедитесь, что AVAudioPlayer(...)
не возвращает nil
перед назначением на player
.
Каков тип 'self.player'? – GoZoner
Возможный дубликат [неожиданно найден nil при распаковке необязательного значения с помощью AVAudioPlayer] (http://stackoverflow.com/questions/27094651/unexpectedly-found-nil-while-unwrapping-an-optional-value-with-avaudioplayer) – GoZoner
объявлен как AVAudioPlayer –