web-dev-qa-db-fra.com

Objectif C: lecture de fichiers texte

Je l'ai déjà fait auparavant, mais ça ne marche pas pour moi maintenant. Je fais:

NSString* path = [[NSBundle mainBundle] pathForResource:@"test" 
                                                 ofType:@"txt"];
NSString* content = [NSString stringWithContentsOfFile:path
                                              encoding:NSUTF8StringEncoding
                                                 error:NULL];
NSLog(@"%@",path);

et il renvoie (null) à chaque fois que je NSLog chemin et contenu. Quelqu'un peut-il voir ce que je fais mal?

63
Chris

le contenu sera nul (qui se connecte en tant que '(null)') si vous lui passez un chemin qu'il ne peut pas ouvrir. Votre seul problème est donc que l'instance pertinente de NSBundle ne parvient pas à trouver test.txt dans la partie ressources de votre bundle d'application.

Vous devriez:

  1. vérifiez que le fichier se trouve dans votre projet Xcode; et si c'est le cas,
  2. vérifiez qu'il est inclus dans la phase "Copier les ressources de l'ensemble" sous votre cible sélectionnée (dans l'arborescence du projet à gauche dans la disposition de la fenêtre Xcode normale) et, si c'est le cas,
  3. regardez à l'intérieur du bundle d'application généré (trouvez votre produit, faites un clic droit, sélectionnez 'Révéler dans le Finder', dans le Finder faites un clic droit sur l'application et sélectionnez 'Afficher le contenu du package', puis recherchez votre fichier dedans) pour vous assurer qu'il est là .

S'il est copié mais que l'instance pertinente de NSBundle ne le trouve pas, quelque chose de très étrange se prépare.

49
Tommy