2015-04-19 4 views
-2

Я пытаюсь запустить этот быстрый код, но он выдает следующую ошибку: «фатальная ошибка: неожиданно обнаружена нуль при развертывании необязательного значения (lldb) ». Это код:Неустранимая ошибка SWIFT: неожиданно найден nil при распаковке необязательного значения (lldb)

// 
// PlaySoundsViewController.swift 
// Revoice 
// 
// Created by Leonardo Barazza on 16/04/15. 
// Copyright (c) 2015 Leonardo Barazza. All rights reserved. 
// 

import UIKit 
import AVFoundation 

class PlaySoundsViewController: UIViewController { 

    var audioPlayer: AVAudioPlayer! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view. 
     if var filePath = NSBundle.mainBundle().pathForResource("movie_quote", ofType: "mp3") { 
      var filePathUrl = NSURL.fileURLWithPath(filePath) 
      audioPlayer = AVAudioPlayer(contentsOfURL: filePathUrl, error: nil) 
     } else { 
      println("the filePath is empty") 
     } 
    } 

    @IBAction func playSlowly(sender: UIButton) { 
     audioPlayer.play() 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 
    /* 
    // MARK: - Navigation 

    // In a storyboard-based application, you will often want to do a little preparation before navigation 
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
     // Get the new view controller using segue.destinationViewController. 
     // Pass the selected object to the new view controller. 
    } 
    */ 

} 

Помогите мне?

Заранее спасибо.

+2

вы можете указать больше информации, где именно отлаживается отладчик. и дает вам ошибку. В общем, нуль дается там, где ваш код ожидает не ноль. – Volker

+0

Нельзя разворачивать вещи, которые могут когда-либо, ни при каких обстоятельствах, ничтожно, если вы не хотите сбоев. – zaph

+0

Возможный дубликат [фатальная ошибка: неожиданно найден nil при развертывании необязательного значения] (http://stackoverflow.com/questions/24948302/fatal-error-unexpectedly-found-nil-while-unwrapping-an-optional-value) – GoZoner

ответ

1

Я думаю, что проблема в audioPlayer собственности: оно определяется как неявно разворачивал AVAudioPlayer необязательный, поэтому он не может быть nil всякий раз, когда вы к нему доступ (в противном случае исключение во время выполнения выбрасывается из-за неявно разворачивать).

Проблема в том, что вы фактически создаете экземпляр (audioPlayer != nil), только если filePath != nil. Вы проверили, что filePath не ноль?

Кстати, вы можете пропустить эту проблему с помощью дополнительного цепочки:

@IBAction func playSlowly(sender: UIButton) { 
    if audioPlayer?.play() == nil { 
     println("audioPlayer is nil") 
    } 
} 
0

Из кода выше вопрос, вы создали только один экземпляр переменной, audioPlayer: AVAudioPlayer с excalmatory марки !.

  • Ошибка показывает, когда нарушитель использует экземпляр, который еще не был создан.
  • После прочтения вашего кода только одно место использовало экземпляр AVAudioPlayer, func playSlowly(). Но вы не указали свою информацию об отладчике, я просто думаю, что audioPlayer.play() - это место, где ошибка.
  • Я думаю, что код if var filePath = NSBundle.mainBundle().pathForResource("movie_quote", ofType: "mp3") приводит к неспособности определить экземпляр audioPlayer.
  • Вы должны проверить правильность определения filePath.