Modifier une URL par rapport à l'URL absolue dans l'objectif C
-
22-09-2019 - |
Question
Comment puis-je prendre un fichier dans le répertoire de l'application (le même dossier le .app est), et obtenir son chemin absolu. Dites le chemin relatif est « Data / fichier.txt », comment pourrais-je utiliser Objective C pour obtenir que comme un chemin absolu? Je l'utilisateur à saisir leur nom de dossier de base, si c'est une aide.
S'il vous plaît aider,
HiGuy
La solution
Trouvez l'emplacement de l'application en cours d'exécution en faisant:
NSString * applicationPath = [[NSBundle mainBundle] bundlePath];
Ce qui renvoie quelque chose comme:
/Users/myUser/Library/Application Support/iPhone Simulator/User/Applications/317CF5C7-57B3-42CE-8DF4-4DD10B070D95/Assignment1a.app
Utilisez ensuite - (NSString *)stringByDeletingLastPathComponent
pour couper le dernier bit.
Autres conseils
J'utilise les méthodes de NSURL
qui résolvent les URL pour moi, comme ceci:
NSURL * bundle = [[NSBundle mainBundle] bundleURL];
NSURL * file = [NSURL URLWithString:@"../Data/file.txt" relativeToURL:bundle];
NSURL * absoluteFile = [file absoluteURL];
Le « ../ » est nécessaire, car il serait contraire essayer de localiser le fichier dans votre paquet app. Mettre le « ../ » au préalable lui dira de regarder dans le dossier contenant le paquet, et non dans le paquet lui-même. En outre, -[NSBundle bundleURL]
est une API 10.6+, mais il est trivial de répliquer la fonctionnalité en utilisant une méthode pratique de NSURL
et -[NSBundle bundlePath]
.
Vous devriez juste être en mesure de concaténer le dossier racine de l'application, avec le chemin relatif. Vous pouvez obtenir dans le répertoire de l'application avec NSHomeDirectory (), afin d'obtenir le chemin absolu, vous pouvez faire quelque chose comme ce qui suit:
NSString *path = [NSHomeDirectory() stringByAppendingString: @"/Data/file.txt"];