web-dev-qa-db-fra.com

Xcode: fichier répertoire pour simulateur Iphone

je veux écrire une chaîne dans un fichier "file.txt": ce fichier dans mon projet (pour Iphone) est à l'intérieur des ressources; J'essaie d'écrire une chaîne dans ce fichier mais ça ne marche pas, je montre mon code.

 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];

Je veux écrire dans ce fichier avec le simulateur xcode, pas avec l'appareil

24
CrazyDev

Je ne sais pas si vous êtes capable d'écrire dans votre bundle, mais vous pouvez le faire dans votre répertoire Documents à la place comme le fait votre code. Pourquoi n'essayez-vous pas cela?

Utilisez le même code et vous trouverez votre fichier dans:

/ Users/ [~ # ~] youruser [~ # ~] /Library/Application Support/iPhone Simulator/ [~ # ~] iosversion [~ # ~] /Applications/ [~ # ~] appid [~ # ~] /Documents/fichier.txt

49
Jorge

Cela a changé avec XCode 6 et iOS 6 et cela est devenu délicat.

Le répertoire des documents est désormais masqué dans:

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

Il semble que l'emplacement change à chaque démarrage de l'application, il est donc très difficile de suivre. Il y a une astuce simple que j'ai empruntée à cet article et que j'inclurai pour les paresseux:

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

Ajoutez ceci par exemple à votre méthode applicationDidFinishLaunching, cela devrait vous faciliter la tâche!

Si vous voulez plus de détails, jetez un œil au article d'origine

NB: Je sais que la question est ancienne, mais bon, je l'ai trouvée lors de la recherche, donc je pense que l'ajout d'une réponse mise à jour peut être utile à certains d'entre nous !

19
rchampourlier

Le répertoire Documents de votre application dans le simulateur se trouve à;

~/Library/Application Support/iPhone Simulator/YOUR-IOS-VERSION/Applications/UNIQUE-KEY-FOR-YOUR-APP/Documents
15

Arrêtez-vous à un point d'arrêt n'importe où dans votre application et tapez "po NSHomeDirectory ()" dans le débogueur. Utilisez la fonction Aller au dossier> Aller au dossier du Finder pour y accéder directement. how the "po NSHomeDirectory()" command in debugger shows path to current app's home directory

8
Vitalii

Avec l'exemple de code que vous avez ici, il n'écrira pas dans votre dossier Ressources, mais dans le dossier Documents du simulateur, qui est en fait l'endroit où vous devez écrire sur l'appareil, mais comme vous le mentionnez, vous ne voulez le faire que sur le simulateur , vous pouvez utiliser

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

Mais, ne pas faire cela dans une application d'expédition, cela échouera.

2
Scott Little

Collez-le dans le terminal.

open ~/Library/Application\ Support/iPhone\ Simulator/
1
Robert

Si vous utilisez Xcode 7 et supérieur, procédez comme suit:

Répertoire des documents:

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
codercat

Dans gdb, arrêtez le processus et collez-le, puis l'emplacement des documents sera imprimé. [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]

 po [[[NSFileManager defaultManager] URLsForDirectory:9 inDomains:1] lastObject]
0
Jong Su Park