Xcode: archivo de directorio para simulador Iphone


Quiero escribir una cadena en un archivo " archivo.txt": este archivo en mi proyecto (para Iphone) está dentro de Recursos; intento escribir una cadena en este archivo pero no funciona, muestro mi código.

 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath =  [documentsDirectory stringByAppendingPathComponent:@"file.txt"];
NSError *error;
[outputString writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:&error];

Quiero escribir en este archivo con simulator xcode, no con device

Author: CrazyDev, 2011-04-08

8 answers

No estoy seguro de si puede escribir en su paquete, pero puede hacerlo en su directorio de documentos como lo hace su código. ¿Por qué no pruebas esto?

Use el mismo código y encontrará su archivo en:

/Users/ YOURSER/Library/Application Support/iPhone Simulator/ IOSVERSION/Applications/ APPID/Documents/file.txt

 49
Author: Jorge,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-04-08 09:28:31

Esto cambió con XCode 6 e iOS 6 y esto se volvió complicado.

El directorio de documentos ahora está oculto dentro de:

~/Library/Developer/CoreSimulator/Devices/<some-id>/data/Containers/Data/Application/<some-other-id>

Parece que la ubicación está cambiando en cada inicio de la aplicación, por lo que es muy difícil de rastrear. Hay un consejo simple que tomé prestado de este artículo y que incluiré para los perezosos:

#if TARGET_IPHONE_SIMULATOR
// where are you?
NSLog(@"Documents Directory: %@", [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]);
#endif

Agregue esto, por ejemplo, a su método applicationDidFinishLaunching, ¡debería hacerlo más fácil!

Si desea más detalles, solo eche un vistazo a la artículo original

NB: Sé que la pregunta es antigua, pero bueno, la encontré mientras buscaba, ¡así que creo que agregar una respuesta actualizada puede servir a algunos de nosotros!

 19
Author: rchampourlier,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-12-07 18:21:26

El directorio de documentos de su aplicación en el simulador se encuentra en;

~/Library/Application Support/iPhone Simulator/YOUR-IOS-VERSION/Applications/UNIQUE-KEY-FOR-YOUR-APP/Documents
 15
Author: Matthew Frederick,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-04-08 09:29:18

Deténgase en un punto de interrupción en cualquier lugar de su aplicación y escriba "po NSHomeDirectory()" en el depurador. Use la función Ir > Ir a la carpeta del Finder para saltar directamente allí. cómo el comando" po NSHomeDirectory () " en el depurador muestra la ruta al directorio principal de la aplicación actual

 8
Author: Vitalii,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-08 09:15:44

Con el código de ejemplo que tienes aquí no escribirá en tu carpeta de Recursos, sino en la carpeta de Documentos del Simulador, que es en realidad donde deberías escribir en el dispositivo, pero como mencionas que solo quieres hacer esto en el simulador, podrías usar

filePath = [[NSBundle mainBundle] bundlePath] stringByAppendingPathComnponent:@"Resources"]

Pero, no haga esto en una aplicación de envío, fallará.

 2
Author: Scott Little,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-04-08 09:34:00

Pegue esto en el terminal.

open ~/Library/Application\ Support/iPhone\ Simulator/
 2
Author: Robert,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-04-19 21:06:11

En gdb, detenga el proceso y péguelo, luego se imprimirá la ubicación de los documentos. [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]

 po [[[NSFileManager defaultManager] URLsForDirectory:9 inDomains:1] lastObject]
 0
Author: Jong Su Park,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-27 07:29:10

Si está utilizando Xcode 7 y superior siga esto:

Directorio de documentos:

file:///Users/codercat/Library/Developer/CoreSimulator/Devices/YourProjectDict/data/Containers/Data/Application/(sample digit)7F53CFB3-C534-443F-B595-62619BA808F2/Documents/your file located here
 0
Author: codercat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-01 07:34:28