2010-10-28 35 views
0

J'ai regardé un certain nombre de questions connexes et ne trouve pas un problème ou une solution similaire, donc mes excuses s'il y a un doublon là quelque part.NSURL fileURLWithPath où NSString a un espace

Quoi qu'il en soit, j'essaie de générer un fichier NSURL à utiliser avec un document NSXMLDocument. Je les composants suivants:

const NSString * PROJECT_DIR = @"~/SP\\ BB/"; 
const NSString * STRINGS_FILE = @"Localizable.strings"; 

et construire l'URL comme ceci:

NSURL * stringsURL = [NSURL fileURLWithPath:[[NSString stringWithFormat:@"%@%@",PROJECT_DIR,STRINGS_FILE] stringByExpandingTildeInPath]]; 

cependant, le chemin conduisant à la NSURL est:
file: // localhost/Users/timothyborrowdale/SP2b /Localizable.strings

J'ai essayé de changer le PROJECT_DIR à

@"~/SP BB/" 
@"~/SP\\\\ BB/" (changes to SP엀2B) 
@"~/SP%20BB/" 
@"~/SP\%20BB/" 

avec le même problème. J'ai également essayé de dactylographier complètement l'url de dossier et en utilisant [NSURL URLWithString:]

J'ai également essayé d'employer stringByAddingPercentEscapesUsingEncoding avec NSUTF8Encoding et NSASCCIEncoding et ceux-ci ont le même problème.

La chaîne NSS s'affiche correctement avant d'être transmise à NSURL ou stringByAddingPercentEscapesUsingEncoding, mais le problème est généré une fois.

Répondre

1

Essayez ceci:

NSString *fnam = [@"Localizable" stringByAppendingPathExtension:@"strings"]; 
NSArray *parts = [NSArray arrayWithPathComponents:@"~", @"SP BB", fnam, (void *)nil]; 
NSString *path = [[NSString pathWithComponents:parts] stringByStandardizingPath]; 
NSURL *furl = [NSURL fileURLWithPath:path]; 

Fondation a une foule de méthodes liées à la route plate-forme indépendante. Préférez les séparateurs d'extension de chemin codés en dur (souvent ".") Et les séparateurs de composants de chemin (souvent "/" ou "\").

+0

J'ai peur que cela ne fonctionne pas, le chemin est bien créé, mais l'URL a le même problème – Septih

+0

Comment avez-vous déterminé cela? Est-ce que lire dans le fichier en utilisant '+ [NSString stringWithContentsOfURL: usedEncoding: error:' fonctionne? Si non, quelle erreur cela donne-t-il? –

+0

Cela fonctionne réellement. Ce n'est peut-être pas le chemin qui est en cause. Je vais essayer d'obtenir l'erreur de l'init XMLDocument. – Septih

0

Essayez d'abandonner stringWithFormat: (jamais la bonne réponse pour les chemins agrafer ensemble) et stringByExpandingTildeInPath et en utilisant à la place NSHomeDirectory() et stringByAppendingPathComponent:.

  • @"~/SP\\ BB/" (changes to SP엀2B)

Comment êtes-vous arrivé à cette conclusion?

+0

Cela n'a pas fonctionné non plus. Encore une fois le NSString initial est bien, mais pas l'URL. En ce qui concerne cette ligne, je viens de copier le texte de la console. – Septih

+0

Septih: Qu'avez-vous imprimé sur la console et comment l'avez-vous imprimé? –

+0

Ce code fait partie d'un test unitaire, donc je pirate mes lignes STAssertTrue (condition, format, ...) pour voir ce qui se passe, donc vraiment la ligne vient de la console des résultats de construction quand la construction échoue . L'article réel imprimé est la description du NSURL. – Septih