Mais pourquoi cette URL est invalide?
Greensource
Membre
Coucou tout le monde!
Je suis tombé sur un truc étrange, je veux créer une NSURL à partir d'un NSString donc j'utilise:
Mais au debug, monURL vaut nil alors que maString valait:
Ce qui me semble bien valide pourtant...
ps: Je vous joint les quelques lignes de la fonction si ça peut aider:
[edit]
Grrrr, je viens de trouver juste après avoir poster! Il y a un espace dans mon URL ça dois provenir de ça!
Il existe un nom pour cette loi où l'ont trouve la soluce juste après avoir poster?
Pour pas être venu pour rien quand même, voici ce qu'il faut utiliser:
Et une petite question: J'utilise NSTUF8StringEncoding pour l'encodage, mais comment savoir lequel choisir?
Je suis tombé sur un truc étrange, je veux créer une NSURL à partir d'un NSString donc j'utilise:
NSURL* monURL = [NSURL URLWithString:maString];
Mais au debug, monURL vaut nil alors que maString valait:
/Users/pduchene/Cybervia/Recherche Cybervia/Menu/build/Debug/Menu.app/Contents/Resources/screen.png
Ce qui me semble bien valide pourtant...
ps: Je vous joint les quelques lignes de la fonction si ça peut aider:
NSBundle* mainBundle = [NSBundle mainBundle];<br />NSString* temp = [mainBundle pathForImageResource:@"screen"];<br />NSURL* rncFile = [NSURL URLWithString:temp];<br />[[NSWorkspace sharedWorkspace] openURL:rncFile];
[edit]
Grrrr, je viens de trouver juste après avoir poster! Il y a un espace dans mon URL ça dois provenir de ça!
Il existe un nom pour cette loi où l'ont trouve la soluce juste après avoir poster?
Pour pas être venu pour rien quand même, voici ce qu'il faut utiliser:
- (NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)encoding
Et une petite question: J'utilise NSTUF8StringEncoding pour l'encodage, mais comment savoir lequel choisir?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
En fait je voulais ouvrir un petit executable qui se trouve dans le dossier de ressources.
Et c'est encore plus simple pour ça car les espaces sont gérer par le système.
Donc il suffit:
La méthode inverse étant à la condition que soit vrai.
Le problème, c'est surtout que quand on veut initialier un NSURL avec un chemin local, il faut utiliser + (id)fileURLWithPath:(NSString *)path et pas + (id)URLWithString:(NSString *)URLString
Parce que le second constructeur de comodité exige une URL correctement formatée, ce qui n'est pas le cas d'un chemin...
Edit: Je devrais lire les fils en entier avant de répondre, ça m'éviterait de faire une réponse qui a déjà été faite
URLWithString suppose d'avoir déjà dans la NSString une URL formattée correctement, avec le protocole indiqué, l'URL encodée au besoin, etc. D'où l'existance de fileURLWithPath qui lui permet de créer ce genre d'URL bien formattée à partir d'un chemin de fichier. Là est toute la différence.
Je ne crois pas mais tu as raison, on devrait lui donner un petit nom :P Elle irait bien dans les lois à la c*n à côté de la Loi de Murphy :P
J'ai un nom de fichier avec des espaces dedans. J'ai besoin de retrouve le path de ce fichier pour l'ouvrir, c'est un fichier PList.
J'ai essayer avec la méthode:
Pour ensuite faire [anURL path], car pour ouvrir un PList il faut un NSString. Mais ça ne fonctionne pas.
J'ai aussi essayer:
Mais idem ça ne fonctionne pas. Pourtant dès que je met un nom sans Espace ya pas de souci!
J'ai bien regarder la partie Path des String mais je ne trouve rien.
Un conseil?
- Quand une méthode qui sert à ouvrir un fichier prend une NSURL, c'est sensé être une URL, locale (file://....) ou remote (http://... ou autre)
- Mais quand une méthode qui a besoin d'un path prend un NSString en argument, ce NSString... c'est juste un path, un chemin d'accès local quoi. Ca n'a rien à voir avec une URL. C'est un bête chemin de fichier. Pas de "PercentEscape", pas de "file://", pas de tout ça. Juste un truc comme "/Users/greensource/Documents/mon dossier à moi/mon fichier à ouvrir.plist" quoi.
Pourquoi vouloir rajouter des %machin et %truc ? Tout ça n'est utile que lorsque tu utilises une URL. (Et encore dans ce cas la classe NSURL le fait pour toi si tu utilises la méthode fileURLWithPath dans ce cas si tu as besoin de ça).
Mais là je capte pas... tu prend un NSString, tu le transformes en NSURL via fileURLWithPath, et ensuite tu en extrait une NSString avec la méthode "path" ? Pourquoi ne pas partir directement de la NSString, pourquoi passer par NSURL dans ce cas ?
Ou alors j'ai loupé un épisode :P
Mais je continue de penser qu'il y a un souci avec les espaces puisque là je l'ai est tous supprimer (ne trouvant pas de solution pour le moment) et bien ça fonctionne.
Et à chaque fois, plistPath = nil;
Mais dès que j'ai écris:
Ca roulais tout seul! Bien sur je vérifiais bien à chaque fois que le nom du fichier était correct