2012-06-12 9 views
7

que he intentado:¿Cómo se accede al escritorio del usuario en XCode?

path = @"~/Desktop/files/text.plist"; 
NSDictionary *aDict = [NSDictionary dictionaryWithContentsOfFile:path]; 

ResultPath: ~/Desktop/archivos/text.plist

path = @"$(HOME)/Desktop/files/text.plist"; 
NSDictionary *aDict = [NSDictionary dictionaryWithContentsOfFile:path]; 

ResultPath: $ (HOME) /Desktop/files/text.plist

path = [NSHomeDirectory() stringByAppendingString:@"/Desktop/files/text.plist"]; 
NSDictionary *aDict = [NSDictionary dictionaryWithContentsOfFile:path]; 

ResultPath:/Users/my_name/Library/Application Support/iPhone Simulator/5.1/Applications/639DC66A-7092-4ECB-9E48-59935AC1C394/Desktop/files/text.plist

  1. ¿Hay alguna forma de acceder a la ruta del escritorio del usuario en XCode?
  2. ¿Se pueden usar variables de entorno en el ejemplo anterior y cómo?

EDIT: Una explicación más detallada de segunda pregunta: ¿ Al igual que existen variables de entorno (o macros) en la consola de MAC, puede ser utilizado estos también dentro del código? Si se pueden usar, ¿alguien puede ayudar con un ejemplo? como $ HOME_DIRECTORY o algo así.

+2

Parece que está escribiendo una aplicación de iOS. No hay una computadora de escritorio en iOS, ¡así que no estoy seguro de lo que espera obtener aquí! – duskwuff

+3

Realmente no veo cómo esto está relacionado con Xcode en absoluto ... –

+1

@duskwuff Estoy escribiendo una aplicación de iOS que se ejecutará solo en el simulador * (sí, hay aplicaciones como ese-piense en entornos de prueba). Como tal, necesito obtener la ruta al Escritorio del usuario en la Mac. –

Respuesta

21

puede especificar el escritorio en la ruta de búsqueda:

NSArray * paths = NSSearchPathForDirectoriesInDomains (NSDesktopDirectory, NSUserDomainMask, YES); 
NSString * desktopPath = [paths objectAtIndex:0]; 

La ventaja de hacerlo de esta manera es que no hace suposiciones acerca de cómo el el usuario ha configurado su Mac. Si su carpeta de escritorio no está en la ubicación predeterminada, aún encontrará la correcta.

+0

Just FYI, para iOS 8 y Xcode 6, Apple parece haber cambiado algunas cosas y esto produce una ruta que no existe y que no es el escritorio de los usuarios de Mac: '/ Users/username/Biblioteca/Desarrollador/CoreSimulator/Dispositivos/C4BE4D04-304E-44EF-8665-B2DF0AE75EBC/data/Containers/Data/Application/167E7298-E774-4CFF-B252-F61AC60E9027/Desktop' – newenglander

+0

@newenglander Eso es porque no hay un concepto real de una carpeta 'Desktop' en un dispositivo iOS debido al sistema de archivos de espacio aislado. La aplicación se ejecuta en el simulador, por lo que muestra la versión del escritorio del simulador. Intente ejecutar el mismo código en un dispositivo real e intente poner un archivo en esta carpeta "Escritorio". Tenga en cuenta el mensaje de error. – Abizern

-2

Esto debe hacerlo por su pregunta # 1:

NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString* documentsDirectoryPath = [paths objectAtIndex:0]; 

Puede explicar su segunda pregunta más? :)

+0

Esta respuesta no parece funcionar. Me da el mismo camino que la tercera opción que he probado anteriormente. –

+0

Hice una edición explicando la segunda parte –

+3

Carpeta de documentos ≠ carpeta de escritorio –

1

Esto debería funcionar:

NSString *pathToDesktop = [NSString stringWithFormat:@"/Users/%@/Desktop/text.txt", NSUserName()]; 
+0

gracias mil. trabajos. –

+0

Esto supone que la carpeta de escritorio está ubicada en un lugar determinado. El usuario puede cambiarlo, y luego se romperá. – Abizern

+0

@Abizern: puede mover el escritorio a otra ubicación, pero siempre habrá un alias ubicado en/Users/your_name/Desktop, por lo que este método seguirá funcionando. – pasawaya

1

Utilizo esta declaración, se supone que la carpeta del escritorio está en la ubicación habitual.

[NSURL fileURLWithPath:[NSHomeDirectory()stringByAppendingPathComponent:@"Desktop"]; 
Cuestiones relacionadas