Où le simulateur iPhone stocke-t-il ses données?

J’ai une firebase database SQLite que j’utilise pour stocker des données d’application, et je pourrais y jeter un coup d’œil pour résoudre un problème que je rencontrais – mais en général, où le simulateur iPhone stocke-t-il ses données?

La réponse acceptée est correcte pour le SDK 3.2 – Le SDK 4 remplace le dossier / User dans ce chemin par un numéro pour chacune des versions iPhone OS / iOS héritées qu’il peut simuler, le chemin devient alors:

~ / Bibliothèque / Application Support / Simulateur iPhone / [Version du système d’exploitation] / Applications / [appGUID] /

Si le SDK précédent est installé à côté, son simulateur 3.1.x continuera à enregistrer ses données dans:

~ / Bibliothèque / Application Support / Simulateur iPhone / Utilisateur / Applications / [appGUID] /

Pour Xcode6 et iOS8

~ / Library / Developer / CoreSimulator / Devices / [DeviceID] / data / Conteneurs / Données / Application / [AppID] /

Trouvé:

 ~/Library/Application Support/iPhone Simulator/User/ 

iOS 8 ~ / Library / Developer / CoreSimulator / Devices / [ID de périphérique] / data / Applications / [appGUID] / Documents /

Sur Lion les Users/[username]/Library sont masqués.

Pour simplement afficher dans le Finder, cliquez sur le menu «Go» en haut de l’écran et maintenez la touche «alt» enfoncée pour afficher «Library».

Cliquez sur “Bibliothèque” et vous pouvez voir votre dossier de bibliothèque précédemment caché.

Précédemment conseillé:

Utilisation

 chflags nohidden /users/[username]/library 

dans un terminal pour afficher le dossier.

Il existe un autre moyen (plus rapide?) De trouver où se trouvent les données de votre application sans Terminal:

  1. Lancer l’application dans le simulateur
  2. Moniteur d’activité ouvert
  3. Recherchez le nom de votre application dans l’onglet CPU
  4. Double-cliquez dessus et ouvrez le “Open Files and Ports”

entrer la description de l'image ici

Avec Xcode 5, vous pouvez utiliser le code ci-dessous:

 #import  

et:

 NSSsortingng *homeDir = NSHomeDirectory(); NSLog(@"%@",homeDir); 

Le résultat peut ressembler à ceci:

 "/Users//Library/Application Support/iPhone Simulator/7.1/Applications/hhhhhhhh-hhhh-hhhh-hhhh-hhhhhhhhhhhh" 

hhhhhhhh-hhhh-hhhh-hhhh-hhhhhhhhhhhh est une chaîne hexadécimale identifiant votre application iOS.

On dirait que Xcode 6.0 a encore déplacé cet emplacement, du moins pour les simulateurs iOS 8.

~ / Library / Developer / CoreSimulator / Devices / [DeviceID] / data / Conteneurs / Data / Application / [AppID]

L’un des moyens les plus faciles de trouver l’emplacement de l’application dans le simulateur. Utilisateur “NSTemporaryDirectory ()”

Pas-

  1. Appliquez un point d’arrêt n’importe où dans l’application et exécutez l’application.
  2. Lorsque l’application s’arrête au point d’arrêt, tapez la commande suivante dans la console Xcode.

    po NSTemporaryDirectory ()

Voir l’image ci-dessous pour un aperçu approprié entrer la description de l'image ici

Maintenant, vous avez exactement le chemin d’access jusqu’au dossier temporaire. Vous pouvez revenir en arrière et voir tous les dossiers relatifs aux applications.

J’espère que cela aide aussi. Bonne codage 🙂

Si le simulateur est en cours d’exécution, vous pouvez obtenir le chemin d’access au conteneur de n’importe quelle application:

 xcrun simctl get_app_container booted  

Exemple de sortie:

 $ xcrun simctl get_app_container booted com.example.app /Users/jappleseed/Library/Developer/CoreSimulator/Devices/7FB6CB8F-63CB-4F27-BDAB-884814DA6FE0/data/Containers/Bundle/Application/466AE987-76BC-47CF-A207-266E65E7DE0A/example.app 

“booted” peut être substitué à la plupart des commandes simctl partout où un UDID de périphérique est attendu.

Vous pouvez voir la liste des périphériques avec la liste xcrun simctl list et obtenir de l’aide sur des commandes spécifiques avec l’ xcrun simctl help .

Mise à jour : À la demande générale de Xcode 8.3, vous pouvez désormais spécifier le type de conteneur souhaité en ajoutant “app”, “data”, “groups” ou un identifiant de groupe d’applications.

Pour obtenir le conteneur de données:

 $ xcrun simctl get_app_container booted com.example.app data 

Plus simple que jamais

  1. Attrapez un point d’arrêt quelque part.

  2. Entrez po NSHomeDirectory() dans la fenêtre de la console

Résultat:

(lldb) po NSHomeDirectory () / Utilisateurs / usernam / Bibliothèque / Développeur / CoreSimulator / Périphériques / 4734F8C7-B90F-4566-8E89-5060505E387F / data / Conteneurs / Données / Application / 395818BB-6D0F-499F-AAFE-068A783D9753

Dans iOS 5:

/ Users / [Nom d’utilisateur] / Bibliothèque / Application Support / iPhone Simulator / 5.0 / Applications / [AppGUID] /

Pour Xcode 4.6, il est stocké dans le chemin suivant …

/ Users / [currentuser] / Bibliothèque / Application Support / iPhone Simulator / 6.1 / Applications /

Pour le savoir par programmation, utilisez le code suivant

  NSLog(@"path:%@",[[NSBundle mainBundle]bundlePath]); 

Faites-le simplement

 NSSsortingng *docDirPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0]; NSLog(@"%@", docDirPath); 

Et vous allez avoir quelque chose comme ça:

/ Utilisateurs / admin / Bibliothèque / Développeur / CoreSimulator / Périphériques / 58B5B431-D2BB-46F1-AFF3-DFC789D189E8 / Données / Conteneurs / Données / Application / 6F3B985F-351E-468F-9CFD-BCBE217A25FB / Documents

Allez-y et vous verrez le dossier de document de votre application, quelle que soit la version de XCode. (Utilisez la commande “Aller au dossier …” dans le Finder et spécifiez un chemin “~ / library”).

Pour iOS 8

Pour localiser le dossier Documents , vous pouvez écrire un fichier dans le dossier Documents:

 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSSsortingng *documentsDirectory = [paths objectAtIndex:0]; NSSsortingng *fileName = [documentsDirectory ssortingngByAppendingPathComponent:@"Words.txt"]; NSSsortingng *content = @"Apple"; [content writeToFile:fileName atomically:NO encoding:NSSsortingngEncodingConversionAllowLossy error:nil]; 

dis, dans didFinishLaunchingWithOptions .

Ensuite, vous pouvez ouvrir un terminal et trouver le dossier:

 $ find ~/Library -name Words.txt 

Si quelqu’un est encore confronté à ce problème en lion, il existe un excellent article avec 19 astuces différentes pour afficher votre répertoire ~ / Library. Retrouvez l’article de Dan Frakes ici http://www.macworld.com/article/161156/2011/07/view_library_folder_in_lion.html

Rappelez-vous que le répertoire du simulateur est donné ci-dessous

~ / Bibliothèque / Application Support / Simulateur iPhone / Utilisateur /

Vous pouvez essayer d’utiliser le code ci-dessous

 NSSsortingng *fileName = @"Demo.pdf"; NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSSsortingng *documentsDirectory = [paths objectAtIndex:0]; NSSsortingng *pdfFileName = [documentsDirectory ssortingngByAppendingPathComponent:fileName]; NSLog(@"File path%@",pdfFileName); 

Pour ouvrir les dictionnaires sur lesquels vous avez créé l’application xCode sur les simulateurs, procédez comme suit:

  1. ouvrir un enrouleur Finder (icône visage souriant)
  2. puis cliquez sur GO -> Go to Folder
  3. tapez: ~ / Bibliothèque / Application Support / iPhone Simulator
  4. Les répertoires sont la version iOS des différents simulateurs
  5. Les sous répertoires sont les applications installées sur le simulateur
  6. Le dossier Documents est l’endroit où l’utilisateur a généré du contenu qui est sauvegardé sur iCloud