2016-03-29 8 views
-1

Der folgende Code funktioniert gut mit Xcode 7.2.1. „Null unerwartet gefunden, während ein optionaler Wert auspackt“Update zu Xcode 7.3 und erhalten: unerwartet gefunden Null beim Entpacken ein Optionaler Wert

var backgroundMusic: SKAudioNode! 

func playBackgroundMusic(name: String) { 
    var delay = 0.0 
    if backgroundMusic != nil { 
    backgroundMusic.removeFromParent() 
    } else { 
delay = 0.1 } 
    runAction(SKAction.waitForDuration(delay)) { 
    self.backgroundMusic = SKAudioNode(fileNamed: name) 
    self.backgroundMusic.autoplayLooped = true 
    self.addChild(self.backgroundMusic) 
} } 

didMoveToView(view: SKView) { 
... 
playBackgroundMusic("Music.mp3") 
} 
  • Ich habe auch versucht, das Projekt Reinigung, Löschen alle Xcode Entwickler abgeleiteten Daten, und überprüfen, ob die ": Nachdem ich auf 7,3 verbesserte ich einen Absturz mit bekommen Music.mp3 "wird in das Hauptpaket integriert.
  • Zurück zu Xcode 7.2.1 und funktioniert gut mit dem gleichen Code.

Ich habe mich den ganzen Tag am Kopf kratzt. Gibt es einen besseren Weg, dies zu tun?

+1

Welche Linie einen Fehler wirft –

+0

vielleicht ist es nicht mehr Ihre Audio-Datei zu finden? – Knight0fDragon

+0

Ich stimme @Daniel Ormeño zu, da Sie nicht gefunden haben, welche Zeile zu diesem Fehler geführt hat. Auch wenn dieser fatale Fehler in swift niemals automatisch einen Unterbrechungspunkt gibt, können Sie dennoch Ihren eigenen Unterbrechungspunkt festlegen, um herauszufinden, welche Ausblendung der Täter ist. – Christopher

Antwort

0

Versuchen Sie, Ihre Variablendeklaration zu einem optionalen zu ändern.

var backgroundMusic: SKAudioNode? 

Dann ist es auszupacken, wie so:

if let bm = backgroundMusic { 
    bm.removeFromParent() 
} else { 
    delay = 0.1 } 
    runAction(SKAction.waitForDuration(delay)) { 
    self.backgroundMusic = SKAudioNode(fileNamed: name) 
    self.backgroundMusic.autoplayLooped = true 
    self.addChild(self.backgroundMusic) 
} 
+0

Danke Ich habe das versucht, aber es stürzt immer noch in der unteren Zeile ab. Vielleicht ist das ein Xcode-Problem und es findet meine Audiodatei nicht? self.backgroundMusic! .autoplayLooped = true – keydogg

+1

Keine Sorge, ich bezweifle, dass es ein Xcode-Problem wäre. Können Sie den Code in der Frage mit Ihrem neuesten aktualisieren? In der Zeile, die Sie auf "self.backgroundMusic! .autoplayLooped = true" beziehen, erzwingen Sie das Auspacken des optionalen Objekts, indem Sie self.backgroundMusic! ausführen, wo Ihre App das Nil findet. Verwenden Sie "if let", um Ihr optionales Element nach dem Instanziieren auszupacken, und hängen Sie den Debugger an, um zu sehen, was der Konstruktor des SKAudioNode tut. Wenn Sie nil zurückgeben, überprüfen Sie, ob die Datei, auf die Sie verweisen, überprüft wird. Prost –

+0

Ich habe das gleiche Problem in XCode 7.3.1 nach Aktualisierung von XCode 7.2. –

0

versuchen this.With Temperatur konstant

var backgroundMusic: SKAudioNode! 

func playBackgroundMusic(name: String) { 
    var delay = 0.0 
    if backgroundMusic != nil { 
    backgroundMusic.removeFromParent() 
    } else { 
    delay = 0.1 
    runAction(SKAction.waitForDuration(delay)) { 
    let temp = SKAudioNode(fileNamed: name) 
    self.backgroundMusic = temp 
    self.backgroundMusic.autoplayLooped = true 
    self.addChild(self.backgroundMusic) 
} 
} 

didMoveToView(view: SKView) { 
... 
playBackgroundMusic("Music.mp3") 
}