2010-11-16 3 views
4

Je suis en train de charger un fichier audio dans AVAudioPlayer sur l'iPad. Quand je le lance sur l'iPad, il le trouve bien dans le bundle. Cependant, si j'essaie de l'exécuter via le simulateur, j'obtiens une erreur null pour NSURL. Voici l'extrait de code (num est un entier arbitraire):NSURL est null dans Simulator, mais OK sur iPad

NSString *name = [NSString stringWithFormat:@"st-answermachine-%i", num]; 
NSLog(@"name = %@", name); 
NSString *path = [[NSBundle mainBundle] pathForResource:name ofType:@"m4a"]; 
NSLog(@"path = %@", path); 
NSURL *url = [NSURL URLWithString:path]; 
NSLog(@"url = %@", url); 

Dans la simluator, la console Debugger trace ceci:

name = st-answermachine-1

path =/utilisateurs/joe/Bibliothèque/application support/iPhone Simulator/3.2/Applications/B85E9CC8-6E39-47B9-XXXX-1E3A2CE145D1/MyApp.app/st-answermachine-1.m4a

url = (null)

Mais si je l'essayer sur l'appareil, je reçois ceci:

name = st-answermachine-1

chemin

=/var/mobile/Applications/116DA1CB-EA13-4B80-XXXX -EBD46C8E2095/MyApp.app/st-answermachine-1.m4a

url = /var/mobile/Applications/116DA1CB-EA13-4B80-XXXX-EBD46C8E2095/MyApp.app/st-answermachine-1.m4a

Une idée s pourquoi je pourrais avoir ce problème s'il vous plaît?

Merci!

+4

Avez-vous essayé 'fileURLWithPath:' au lieu de 'URLWithString:'? –

+0

Brillant! Merci! – jowie

Répondre

16

URLWithString: attend une chaîne contenant une URL réelle en tant que paramètre (par exemple 'http: // blah /' ou 'file: /// blah'). Les URL ne peuvent pas contenir d'espaces (comme le fait le chemin du simulateur), et c'est pourquoi il échoue. Comme Evan suggère, vous devez utiliser fileURLWithPath: pour convertir une chaîne de chemin d'accès à un objet URL.

+0

Doh! Je suis un idiot. Merci! – jowie

+0

Pas à peine, Joe. C'était une question simple et directe ... et je pense que ça et la réponse pointent vers un bug dans mon code aussi. –

Questions connexes