2015-10-27 2 views
-4

J'essaie des choses de base comme la lecture audio.erreur irrécupérable: trouvé de façon inattendue nil tout en déballant une valeur optionnelle

Dès le début, lorsque j'ai exécuté le projet, j'ai reçu une erreur, l'erreur n'apparaît pas dans le contrôleur de vue, mais elle apparaît immédiatement lorsque je lance le projet.

fatal error: unexpectedly found nil while unwrapping an Optional value

Mon code:

var buttonAudioURL = try? NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("Sound", ofType: "m4a")!) 
+3

Avez-vous lu la documentation? Tout est dans l'erreur. Vous avez utilisé '!' Sur une valeur 'nil' et cela n'est pas autorisé dans Swift (voir la partie NSBundle). – Arc676

+0

Convention sur SO est si vous avez trouvé une réponse utile, upvote-le; Si vous avez trouvé une réponse qui vous a aidé à résoudre votre problème, indiquez-le comme «accepté» (bouton de coche sous le bouton de votes). Vous n'avez jamais fait cela - pas juste. :) – Moritz

Répondre

2

Avec NSBundle.mainBundle().pathForResource("Sound", ofType: "m4a")! vous êtes forcer le dépliage du optionnel retourné par NSBundle (notez le ! à la fin). Donc, si cette ressource "Sound.m4a" n'est pas disponible, comme cela semble être le cas, l'application va planter.

Vous avez besoin de deux choses: assurez-vous que la ressource est dans le bundle, et utilisez le déballage et la gestion des erreurs en toute sécurité au lieu de forcer le déballage.

Je vous suggère fortement de lire le nice docs Apple a mis à notre disposition, tout cela est expliqué en détail.

Notez également que NSURL ne lance pas donc vous ne devez pas utiliser try avec elle.

Mise à jour

Voici un exemple de ce que je parle:

if let soundResourceURL = NSBundle.mainBundle().pathForResource("Sound", ofType: "m4a") { 
    let buttonAudioURL = NSURL(fileURLWithPath: soundResourceURL) 
    // use buttonAudioURL here 
} else { 
    print("Unable to find Sound.m4a") 
} 
+1

alors comment puis-je résoudre le problème @eric D –

+0

Mis à jour ma réponse. – Moritz