2015-03-16 3 views
-1

Я не знаю, как исправить «нуль», о котором сообщает это сообщение об ошибке.неожиданно нашел нуль во время разворачивания необязательного значения (lldb) AVAudioPlayer

Мой код:

var error:NSError? 
self.player = AVAudioPlayer(contentsOfURL: NSURL(string:"http://192.168.0.101:3000/output.mp3"), error: &error) 

Я получаю сообщение:

fatal error: unexpectedly found nil while unwrapping an Optional value (lldb)

+0

Каков тип 'self.player'? – GoZoner

+0

Возможный дубликат [неожиданно найден nil при распаковке необязательного значения с помощью AVAudioPlayer] (http://stackoverflow.com/questions/27094651/unexpectedly-found-nil-while-unwrapping-an-optional-value-with-avaudioplayer) – GoZoner

+0

объявлен как AVAudioPlayer –

ответ

0

Инициализатором для 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.

Смежные вопросы

 Смежные вопросы