web-dev-qa-db-fra.com

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

J'ai une base de données SQLite que j'utilise pour stocker les données d'applications et je pourrais y jeter un coup d'œil pour résoudre un problème que je rencontre - mais où le simulateur iPhone stocke-t-il ses données, généralement?

216
Codebeef

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

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

si le SDK précédent est installé en parallèle, son simulateur 3.1.x continuera à enregistrer ses données dans:

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

Pour Xcode6 et iOS8

~/Bibliothèque/Développeur/CoreSimulator/Périphériques/[DeviceID]/data/Conteneurs/Données/Application/[AppID]/

272
dsmudger

Il existe un autre moyen (plus rapide?) De localiser 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 dossier "Ouvrir les fichiers et les ports".

enter image description here

78
Sergey Lost

Trouvé le:

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

iOS 8 ~/Bibliothèque/Développeur/CoreSimulator/Appareils/[ID de périphérique]/data/Applications/[appGUID]/Documents /

73
Wagh

Sur Lion, le Users/[username]/Library est masqué.

Pour afficher simplement dans le Finder, cliquez sur le menu "Aller" en haut de l'écran et maintenez la touche "Alt" enfoncée pour afficher "Bibliothèque".

Cliquez sur 'Bibliothèque' et vous pourrez voir votre dossier de bibliothèque précédemment masqué.

Auparavant conseillé:

Utilisation

chflags nohidden /users/[username]/library

dans un terminal pour afficher le dossier.

66
Rafael Moreira

Plus facile que jamais.

  1. Attraper un point d'arrêt quelque part.

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

Résultat:

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

36
Lal Krishna

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

#import <Foundation/NSFileManager.h>

et:

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

Le résultat peut ressembler à:

"/Users/<your user name>/Library/Application Support/iPhone Simulator/7.1/Applications/hhhhhhhh-hhhh-hhhh-hhhh-hhhhhhhhhhhh"

hhhhhhhh-hhhh-hhhh-hhhh-hhhhhhhhhhhh est une chaîne hexagonale identifiant votre application iOS.

32
Pisca46

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/Containers/Data/Application/[AppID]

30
awolf

Si le simulateur est en cours d'exécution, vous pouvez obtenir le chemin d'accès au conteneur de n'importe quelle application:

xcrun simctl get_app_container booted <app bundle identifier>

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 xcrun simctl list et obtenir de l'aide sur des commandes spécifiques avec xcrun simctl help.

Mise à jour: À la demande générale dans Xcode 8.3, vous pouvez désormais spécifier le type de conteneur souhaité en ajoutant "app", "données", "groupes" ou un identificateur de groupe d'applications.

Pour obtenir le conteneur de données:

$ xcrun simctl get_app_container booted com.example.app data
30
russbishop

L'un des moyens les plus faciles de localiser l'application dans le simulateur. Utilisateur "NSTemporaryDirectory ()"

Pas-

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

    po NSTemporaryDirectory ()

Voir l'image ci-dessous pour un aperçu approprié enter image description here

Vous avez maintenant le chemin exact jusqu’au dossier temporaire. Vous pouvez revenir en arrière et voir tous les dossiers liés aux applications.

J'espère que cela aide aussi. Bonne codage :)

29
Shubhendu

Sous iOS 5:

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

7
Karthi

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

/ Utilisateurs/[utilisateur actuel]/Bibliothèque/Application Support/iPhone Simulator/6.1/Applications /

Pour le savoir par programme, utilisez le code suivant

  NSLog(@"path:%@",[[NSBundle mainBundle]bundlePath]);
6
Durai Amuthan.H

Faites simplement ceci:

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

Et vous aurez quelque chose comme ça:

/ Users/admin/Library/Developer/CoreSimulator/Devices/58B5B431-D2BB-46F1-AFF3-DFC789D189E8/data/Conteneurs/Données/Application/6F3B985F-351E-468F-9CFD-BCBE217A25FB/Documents

Allez-y et vous verrez le dossier de documents de votre application quelle que soit la version de XCode. (Utilisez la commande "Aller au dossier ..." dans le Finder et spécifiez un chemin "~/bibliothèque").

Version Swift pour le chemin de la chaîne:

let docDirPath =
NSSearchPathForDirectoriesInDomains(.documentDirectory,
                                    .userDomainMask, true).first
print(docDirPath)

et URL du dossier:

let docDirUrl =
    FileManager.default.urls(for: .documentDirectory,
                             in: .userDomainMask).first
print(docDirUrl)
6
LembergSun

Pour iOS 8

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

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

dire, dans didFinishLaunchingWithOptions.

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

$ find ~/Library -name Words.txt
4
ohho

si quelqu'un rencontre encore ce problème dans Lion, il existe un excellent article avec 19 astuces différentes pour afficher votre répertoire ~/Library. trouver 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/iPhone Simulator/User/

2
Edwin

Pour les utilisateurs natifs de réactifs qui n'utilisent pas souvent Xcode, vous pouvez simplement utiliser find. Ouvrez un terminal et recherchez par avec le nom de la base de données.

$ find ~/Library/Developer -name 'myname.db'

Si vous ne connaissez pas le nom exact, vous pouvez utiliser des caractères génériques:

$ find ~/Library/Developer -name 'myname.*'

0
sheepdog

Pour ouvrir les dictories sur lesquelles vous utilisez App que vous avez créé xCode sur les simulateurs, procédez comme suit:

  1. ouvrir un windor Finder (icône représentant un smiley)
  2. puis cliquez sur OK -> Aller au dossier
  3. type: ~/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é le contenu qui est sauvegardé sur iCloud
0
Mike Zriel

Je n'ai aucune affiliation avec ce programme, mais si vous souhaitez ouvrir cela dans le Finder SimPholders , cela est incroyablement facile.

0
Jason

Vous pouvez essayer d'utiliser le code ci-dessous

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