current directory en cocoa

thdevita

Membre enregistré
16 Juillet 2003
8
0
Bonjours je voudrait enregistrer des fichiers de conf dans le dossier même ou se trouve mon application malheureusement quand on lance l'appli (sauf par l'intermédiaire de Xcode bien sur) le current directory est la racine, il y a t il un moyen simple de retrouver le dossier de l'appli comme un NSHomeDirectory mais pour l'appli en cours d'exécution? car j'aimerais pourvoir exécuté l'appli de façon générique sans être obligé de l'installer à un endroit précis et mettre un chemin absolu par défaut.

Merci d'avance
 
Il faut que tu te serves des fonctions de la classe NSBundle. La tu pourras retrouver tous les chemins qui concernent ton application.
 
Je te donne la solution en Carbon, en supposant que la transposition à Cocoa soit triviale :siffle: :

Bloc de code:
  CFURLRef FolderURL=NULL,FolderURLAbsolute=NULL;
  CFBundleRef	myAppsBundle=NULL;

  myAppsBundle = CFBundleGetMainBundle();
  FolderURL=CFBundleCopyResourcesDirectoryURL(myAppsBundle);
  FolderURLAbsolute=CFURLCopyAbsoluteURL(FolderURL);

GetMainBundle permet d'obtenir une référence sur le bundle courant de ton appli.
Et finalement CFBundleCopyResourcesDirectoryURL renvoie l'URL courante de l'appli (il existe aussi CFBundleCopyResourcesDirectoryURL pour accéder au dossier Resources de ton bundle)

CFURLCopyAbsoluteURL et optionnel et permet de sécuriser ton URL si elle doit absolument être absolue.

J'ai jeté un oeil sur NSBundle et il semble que les équivalents soient mainBundle pour acquerir le bu ndle principal et executablePath pour obtenir le chemin de l'executable... A confirmer ;)