1 Ce sont les fichiers WAV que j'ai utilisés
2 J'ai joint une capture d'écran de l'endroit où il lance cette erreur. P>
Voici ce que j'ai en ce moment. Je pensais que j'avais tout correct. Je sais que cela a quelque chose à voir avec l'utilisation d'une facultative mais pas sûre de la réparer. p>
3 Réponses :
Une de vos ressources est nulle.
Vous devriez vérifier si votre résorce est nul avant (avec force) le déballer: Faites ceci pour chaque ressource et utilisez le débogueur pour voir lequel est nul. P> P>
comme @chris et @Excitus mentionné, votre code complet ressemblerait.
class SecondViewController: UIViewController { var audioPlayer: AVAudioPlayer? override func viewDidLoad() { super.viewDidLoad() } @IBAction func cat(_ sender: Any) { if let catSound = Bundle.main.path(forResource: "cat", ofType: "wav") { audioPlayer = try? AVAudioPlayer(contentsOf: URL(fileURLWithPath: catSound)) audioPlayer?.play() }else { print("Cat File is missing") } } @IBAction func horse(_ sender: Any) { if let horseSound = Bundle.main.path(forResource: "horse", ofType: "wav") { audioPlayer = try? AVAudioPlayer(contentsOf: URL(fileURLWithPath: horseSound)) audioPlayer?.play() }else { print("Horse File is missing") } } @IBAction func dog(_ sender: Any) { if let dogSound = Bundle.main.path(forResource: "dog", ofType: "wav") { audioPlayer = try? AVAudioPlayer(contentsOf: URL(fileURLWithPath: dogSound)) audioPlayer?.play() }else { print("Dog File is missing") } } @IBAction func raccoon(_ sender: Any) { if let raccoonSound = Bundle.main.path(forResource: "raccoon", ofType: "wav") { audioPlayer = try? AVAudioPlayer(contentsOf: URL(fileURLWithPath: raccoonSound)) audioPlayer?.play() }else { print("Raccoon File is missing") } }}
Sensibilité de casse de cas. strong> Les fichiers sont mocassés ("CAT") mais les chaînes de paramètres dans le code sont en hausse ("CAT"). La chaîne de paramètre et le nom du fichier doivent correspondre exactement. P> Votre code n'est pas très utile de toute façon, car il écrase l'instance de lecteur audio trois fois dans Le débordement de la force est bien parce que tous les fichiers Doit être dans le paquet à Heure de compilation forte>. Une erreur de design (fichier est manquante ou nom est mal calculé) peut être corrigé immédiatement. P> ViewDidLoad p> P> P> P> P> P> P> P> P> P> P> P> P> P> P> P> P> P> P> P > Une solution plus efficace consiste à créer une méthode pour charger le fichier et à lire le son et à utiliser l'API associé à URL de
BUNDLE code>. P>
class SecondViewController: UIViewController
{
var audioPlayer: AVAudioPlayer!
@IBAction func cat(_ sender: Any) {
playSound(withName: "cat")
}
@IBAction func horse(_ sender: Any) {
playSound(withName: "horse")
}
@IBAction func dog(_ sender: Any) {
playSound(withName: "dog")
}
@IBAction func raccoon(_ sender: Any){
playSound(withName: "raccoon")
}
func playSound(withName name : String) {
let sound = Bundle.main.url(forResource: name, withExtension: "wav")!
audioPlayer = try! AVAudioPlayer(contentsOf: sound)
audioPlayer.play()
}
}
Lorsque vous obtenez cette erreur, recherchez des marques d'exclamation (
! Code>) qui signifie une facultative est d'être une force non emballée. Je pense que le chemin de vos sons est faux. En outre, vous définissez la même instance de lecteur audio sur chaque son, alors que seul le dernier restera. Essayez de régler le son dans chacune des actions des boutons.
Est-ce que cela répond à votre question? Qu'est-ce que "erreur fatale: de manière inattendue Nil tout en défaillant une valeur facultative "moyenne?
Si possible, pouvez-vous partager la capture d'écran de la ligne dans laquelle il se bloque.
Remplacer
URL (FileURLWIPATHE: CATSOUND!) CODE> avec facultatif au lieu de forcer le débit.
URL (FileRLWithPath: Catsound ?? "") code>. Forcer le déclenchement va crancer si sa valeur est nulle
Pouvez-vous également partager une capture d'écran des fichiers audio en xcode
vient de télécharger une capture d'écran des fichiers audio
Mon application ne se bloque plus grâce à vous, @sayooj, mais quand j'appuie sur les boutons, le son n'a pas joué. une idée pourquoi?
@Lindseymontgomery Le nom de la ressource dans le code doit être identique à celui de votre paquet. Dans votre code, vous avez fourni "CAT" tandis que le nom du fichier est "CAT"
Soit CatSound = Bundle.Main.Path (Forresource: "CAT", OFTYPE: "WAV") CODE>. Pouvez-vous changer cela et essayer
@Sayooj omg im pleurer, ça a fonctionné. J'ai littéralement été bloqué sur ceci pendant 5 jours et j'ai eu une panne de mentl. Merci beaucoup!!!
Je mettrai à jour ma réponse avec les modifications, veuillez marquer la réponse comme acceptée.