Pregunta

¿Cómo voy a tener un archivo en el directorio de la aplicación (la misma carpeta del .app está en), y obtener su ruta absoluta. Decir la ruta relativa es "Data / archivo.txt," ¿cómo voy a utilizar Objective C para conseguir que, como una ruta absoluta? Tengo el usuario introduzca su nombre de la carpeta de inicio, si eso es ninguna ayuda.

Por favor, ayuda,

HiGuy

¿Fue útil?

Solución

Para la ubicación de la aplicación en ejecución haciendo:

NSString * applicationPath = [[NSBundle mainBundle] bundlePath];

que devolverá algo como:

/Users/myUser/Library/Application Support/iPhone Simulator/User/Applications/317CF5C7-57B3-42CE-8DF4-4DD10B070D95/Assignment1a.app

A continuación, utilice - (NSString *)stringByDeletingLastPathComponent a cortar el último bit.

Otros consejos

que haría uso de los métodos NSURL que las direcciones URL a resolver para mí, así:

NSURL * bundle = [[NSBundle mainBundle] bundleURL];
NSURL * file = [NSURL URLWithString:@"../Data/file.txt" relativeToURL:bundle];
NSURL * absoluteFile = [file absoluteURL];

El "../" es necesaria, porque de lo contrario iba a tratar de localizar el archivo dentro de su paquete de aplicaciones. Poner la "../" de antemano le dirá que se vea en la carpeta que contiene el paquete, y no en el propio paquete. Además, -[NSBundle bundleURL] es una API 10.6+, pero es trivial para replicar la funcionalidad utilizando un método NSURL conveniencia y -[NSBundle bundlePath].

Usted sólo debe ser capaz de concatenar la carpeta raíz de la aplicación, con la ruta relativa. Usted puede conseguir en el directorio de aplicación a casa con NSHomeDirectory (), así que para obtener la ruta absoluta que puede hacer algo como lo siguiente:

NSString *path = [NSHomeDirectory() stringByAppendingString: @"/Data/file.txt"];
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top