2016-03-29 10 views
-1

Aşağıdaki kod Xcode 7.2.1 ile düzgün çalışıyor. Ben 7.3'e yükseltilen sonra bir kilitlenme alıyorum: Ben de projeyi temizlik çalıştıXcode 7.3 'e Güncelle ve Al: beklenmedik şekilde sıfırlanırken bir null değeri bulunamadı

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") 
} 
  • tüm Xcode Geliştirici türetilen verileri silme ve doğrulanması "beklenmedik bir Opsiyonel değerini unwrapping ederken nil bulundu" " Music.mp3 "ana paketin içine yerleştiriliyor.
  • Xcode 7.2.1'e geri dönün ve bina aynı kodla düzgün çalışıyor.

Günümün çoğunu kafamda çiziyordum. Bunu yapmanın daha iyi bir yolu var mı?

+1

satırlarından hangisi belki de artık ses dosyası bulmaktır bir hata –

+0

atıyor sabit this.With temp deneyin? – Knight0fDragon

+0

Bu hatayla sonuçlanan satırı bulamadığınız için @Daniel Ormeño yanıtına katılıyorum. Hızlı bir şekilde bu ölümcül hata asla otomatik olarak bir mola noktası vermese de, hangi suçlamanın suçlu olduğunu bulmak için kendi mola noktanızı belirleyebilirsiniz. – Christopher

cevap

0

Değişken bildiriminizi isteğe bağlı olarak değiştirmeyi deneyin.

var backgroundMusic: SKAudioNode? 

Sonra şekilde ambalajından:

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

Teşekkürler Denedim ama hala aşağıdaki satırda çöküyor. Belki bu bir Xcode sorundur ve ses dosyamı bulamıyor mu? self.backgroundMusic! .autoplayLooped = true – keydogg

+1

Endişelenmeyin, bir Xcode sorunu olacağını sanmıyorum. Sorudaki kodu en son ile güncelleyebilir misiniz? "self.backgroundMusic! .autoplayLooped = true" ifadesine atıfta bulunduğunuz satırda, uygulamanızın nil olduğu yer olan self.backgroundMusic! 'i seçerek isteğinizin kaldırılmasını zorluyorsunuz. "If let" seçeneğinin, örneklemeden sonra isteğe bağlı olarak açılmasını ve SKAudioNode öğesinin yapıcısının ne yaptığını görmek için hata ayıklayıcıyı iliştirmesini kullanın, nil geri dönüyor olabilir, hedefine yönlendirmekte olduğunuz dosyanın olup olmadığını kontrol edin. Şerefe –

+0

XCode 7.2'den güncelledikten sonra XCode 7.3.1'de aynı sorunu yaşıyorum. –

0

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") 
} 
İlgili konular