Avoir un problème Obtenir l'URL pour une ressource pour une raison quelconque: ce code est dans la vue ViewDidLoad, et il est fonctionné dans d'autres applications, mais pas ici pour une raison quelconque:
NSString* audioString = [[NSBundle mainBundle] pathForResource:@"sound" ofType:@"wav"]; NSLog(@"AUDIO STRING: %@" , audioString); NSURL* audioURL = [NSURL URLWithString:audioString]; NSLog(@"AUDIO URL: %d" , audioURL); NSError* playererror; audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:audioURL error:&playererror]; [audioPlayer prepareToPlay]; NSLog(@"Error %@", playererror);
4 Réponses :
Vous passez Essayez de passer dans l'audioplayer comme ça et sautez la chaîne. P> audiourl code> dans votre
nslog code> comme
% d code>, pourquoi vous obtenez 0. Si vous le transmettez comme un objet avec
% @ code> Vous obtiendrez
null code>.
NSURL *fileURL = [[NSURL alloc] initFileURLWithPath: [[NSBundle mainBundle] pathForResource:@"sound" ofType:@"wav"]];
Mon appel original était [[Avadioplayer ALLOC] initwithContentsofurl: [Nsurl Urlwithstring: [[[Nsbundle MainBundune] Pathforresource: @ "Sound" detype: @ "WAV"]] Erreur: nil]; Mais j'ai toujours eu le même problème; Je viens de le diviser pour un débogage plus facile
Votre chaîne n'a pas de protocole, c'est donc un URL . Essayez ceci ...
NSString* expandedPath = [audioString stringByExpandingTildeInPath]; NSURL* audioUrl = [NSURL fileURLWithPath:expandedPath];
Désolé, j'ai abrégé l'entrée du journal, mais la chaîne est un chemin valide et l'utilisation du chemin expansé ne fait pas de différence.
Ah désolé encore, j'aurais dû lire plus attentivement cela. Changer à FileRLWithPath a réparer le problème. Merci!
Changer simplement une ligne à ceci:
NSURL* audioURL = [NSURL fileURLWithPath:audioString];
Vous ne lisez pas suffisamment les réponses suffisamment - vous utilisez UrlwithString, lorsque vous devez utiliser FileRLWithPath. Vous ne pouvez pas passer un fichier: // voie d'urlwithithstring. Je pense que vous devez également préparer le fichier: // à l'avant de la chaîne, car vous n'avez qu'un chemin (qui, comme indiqué, n'a aucun protocole). P>