Dans iOS 7, le répertoire de documents des simulateurs iOS se trouve dans:
/Users/Sabo/Library/Application Support/iPhone Simulator/
Cependant, dans iOS 8 Beta Simulator, je ne trouve pas le répertoire correspondant pour iOS 8 dans le répertoire ci-dessus.
Où se trouve le chemin du répertoire de documents pour le simulateur iOS 8?
sur mon ordinateur, le chemin est:
~/Library/Developer/CoreSimulator/Devices/1A8DF360-B0A6-4815-95F3-68A6AB0BCC78/data/Container/Data/Application/
REMARQUE: Ces identifiants longs (par exemple, les UDID) sont probablement différents sur votre ordinateur.
NSLog
ci-dessous le code quelque part dans "AppDelegate", lancez votre projet et suivez le chemin. Vous pourrez ainsi accéder facilement aux documents plutôt que de chercher au hasard dans "~/Bibliothèque/Developer/CoreSimulator/Devices /".
Objective-C
NSLog(@"%@",[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]);
rapide
Si vous utilisez Swift 1.2, utilisez le code ci-dessous qui ne sortira que dans le développement lorsque vous utiliserez le simulateur en raison du bloc #if
#endif
:
#if Arch(i386) || Arch(x86_64)
let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as! NSString
NSLog("Document Path: %@", documentsPath)
#endif
Copiez votre chemin depuis "/ Users/ankur/Library/Developer/CoreSimulator/Devices/7BA821 ..." et sélectionnez "Finder" puis "Go to Folder" ou command + shift + g et collez votre chemin, laissez le mac vous emmener dans votre répertoire de documents :)
Il suffit d'écrire ci-dessous le code dans AppDelegate -> didFinishLaunchingWithOptions
Objectif C
#if TARGET_IPHONE_SIMULATOR
// where are you?
NSLog(@"Documents Directory: %@", [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]);
#endif
Swift 2.X
if let documentsPath = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask).first?.path {
print("Documents Directory: " + documentsPath)
}
Swift 3.X
#if Arch(i386) || Arch(x86_64)
if let documentsPath = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first?.path {
print("Documents Directory: \(documentsPath)")
}
#endif
Swift 4.2
#if targetEnvironment(simulator)
if let documentsPath = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first?.path {
print("Documents Directory: \(documentsPath)")
}
#endif
Sortie
]
Copiez votre chemin à partir de "/ Users/mitul_marsonia/Library/Developer/CoreSimulator/Devices/E701C1E9-FCED-4428-A36F-17B32D32918A ..." dans "Finder" puis "Aller au dossier" ou à la commande + Maj + g et collez votre chemin , laissez le Mac vous mener à votre répertoire de documents
Je recommande une application utilitaire Nice appelée SimPholders qui facilite la recherche des fichiers et des dossiers lors du développement de votre application iOS. Il a une nouvelle version pour fonctionner avec les nouveaux simulateurs appelés SimPholders2. Vous pouvez le trouver sur simpholders.com
Bien que les réponses soient nombreuses, aucune ne permet de comprendre comment la structure des dossiers des simulateurs iOS 8.3 a été modifiée et ne permet pas de trouver rapidement les données de l'application (dossier Documents).
Étant donné qu'iOS 8, le ou les dossiers de stockage de données d'une application sont distincts des fichiers exécutables de l'application, tandis qu'iOS 7 et les versions antérieures possèdent la même structure de dossiers. La seule différence est que tous les simulateurs (différents types et versions) sont maintenant dans un grand dossier.
Ainsi, le chemin d'accès à un simulateur iOS 8,7,6 est le suivant:
~/Library/Developer/CoreSimulator/Devices
Chaque simulateur est maintenant contenu dans un dossier nommé avec un identifiant unique qui change à chaque réinitialisation d'un simulateur.
Vous pouvez trouver la Identifier
de chacun de vos appareils et simulateurs en allant à Xcode > Window > Devices
(les 3 ou 4 premiers caractères de l'identifiant sont plus que suffisants pour s'en souvenir).
Pour trouver celui sur lequel vous avez installé votre/vos application (s), jetez un coup d'œil à votre Run scheme > devices
(écran 2).
Maintenant, après avoir identifié votre simulateur, la structure des dossiers est très différente selon sa version:
Sur iOS 8 l'exécutable et le dossier de données d'une application se trouvent dans des dossiers différents:
Exécutable: ~/Library/Developer/CoreSimulator/Devices/[simID]/data/Containers/Bundle/Application/[appID]
dossier de données: ~/Library/Developer/CoreSimulator/Devices/[simID]/data/Containers/Data/Application/[appID]/
Dossier de documents: ~/Library/Developer/CoreSimulator/Devices/[simID]/data/Containers/Data/Application/[appID]/Documents
Sur iOS 7 et au-dessous, la structure de dossiers est la même qu’auparavant, mais rappelez-vous que tous les simulateurs se trouvent dans le même dossier (voir ci-dessus).
Si votre application utilise CoreData, une astuce intéressante consiste à rechercher le nom du fichier sqlite à l'aide de terminal.
find ~ -name my_app_db_name.sqlite
Les résultats répertorieront les chemins de fichiers complets de tous les simulateurs ayant exécuté votre application.
Je souhaite vraiment que Apple ajoute simplement un bouton au menu de fichier du simulateur iOS, comme "Dossier Révéler Documents dans le Finder".
Il est exact que nous devons examiner le chemin ~/Library/Developer/CoreSimulator/Devices /.
Mais le problème que je vois est que le chemin change constamment à chaque fois que je lance l'application. Le chemin contient un autre ensemble d'identifiants longs après la chaîne d'application, qui change constamment à chaque fois que j'exécute l'application. Cela signifie essentiellement que mon application ne disposera pas de données en cache lors de la prochaine exécution.
Avec iOS 9.2 et Xcode 7.2, le script suivant ouvre le dossier Documents de la dernière application installée sur le dernier simulateur utilisé.
cd ~/Library/Developer/CoreSimulator/Devices/
cd `ls -t | head -n 1`/data/Containers/Data/Application
cd `ls -t | head -n 1`/Documents
open .
Pour créer un script facile à exécuter, placez-le dans une application Automator avec "Run Shell Script":
Avec l’adoption de CoreSimulator dans Xcode 6.0, les répertoires de données s’appliquent par périphérique plutôt que par version. Le répertoire de données est ~/Bibliothèque/Developer/CoreSimulator/Devices // Les données peuvent être déterminées à partir de 'xcrun simctl list'
Notez que vous pouvez supprimer en toute sécurité ~/Bibliothèque/Application Support/iPhone Simulator et ~/Bibliothèque/Logs/iOS Simulator si vous prévoyez de ne pas avoir besoin de revenir à Xcode 5.x ou une version antérieure.
mise à jour: Xcode 7.2 • Swift 2.1.1
if let documentsPath = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask).first?.path {
print(documentsPath) // "var/folder/.../documents\n" copy the full path
}
Allez dans le Finder, appuyez sur cmd-g (ou sur Go> Go to Folder ... dans la barre de menus) et collez le chemin complet "var/folder /.../ documents" et appuyez sur Go.
Les simulateurs sont situés sous:
~/Library/Developer/CoreSimulator/
Ici, ils sont répertoriés en tant que répertoires avec des noms UUID. Utilisez Trier par 'Date de modification' pour trouver la dernière. À l'intérieur, naviguez vers:
/data/Containers/Data/Application/
Ici, vous obtiendrez une liste de toutes les applications de cet appareil. Vous pouvez à nouveau trier ceci pour obtenir la dernière application.
REMARQUE: Xcode modifie le nom du répertoire à chaque fois que vous exécutez l'application. Ne vous fiez donc pas à la création d'alias/de raccourcis sur le bureau.
Le moyen le plus simple est d'utiliser l'application ici , qui fait tout automatiquement.
Essayez ~/Library/Developer/CoreSimulator/Devices/
Où se trouve le répertoire de documents pour le simulateur iOS 8
Vous avez peut-être remarqué que le simulateur iPhone a changé avec Xcode 6 et, bien entendu, le chemin d'accès au répertoire de documents de vos applications simulées. Parfois, nous aurons peut-être besoin d'y jeter un coup d'œil.
Trouver ce chemin n’est pas aussi simple qu’il était, à savoir Library/Application Support/iPhone Simulator/7.1/Applications/suivi d’un numéro crypté représentant votre application.
À partir de Xcode 6 et iOS 8, vous le trouverez ici: Bibliothèque/Développeur/CoreSimulator/Devices/numéro cryptique/data/Conteneurs/Données/Application/numéro cryptique
http://pinkstone.co.uk/where-is-the-documents-directory-for-the-ios-8-simulator/
dans Appdelegate, mettez ce code pour voir Document and Cache Dir:
#if TARGET_IPHONE_SIMULATOR
NSLog(@"Documents Directory: %@", [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]);
NSArray* cachePathArray = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString* cachePath = [cachePathArray lastObject];
NSLog(@"Cache Directory: %@", cachePath);
#endif
sur le journal:
Répertoire de documents:/Utilisateurs/xxx/Bibliothèque/Développeur/CoreSimulator/Appareils/F90BBF76-C3F8-4040-9C1E-448FAE38FA5E/data/Conteneurs/Données/Application/3F3F6E12-EDD4-4C46-BFC3-58EB64D4BCCB/Documents /
Répertoire du cache:/Utilisateurs/xxx/Bibliothèque/Développeur/CoreSimulator/Appareils/F90BBF76-C3F8-4040-9C1E-448FAE38FA5E/data/Conteneurs/Données/Application/3F3F6E12-EDD4-4C46-BFC3-58EB64D4BCCB/Bibliothèque/Caches
Si vous aimez aller dans les dossiers d'applications pour voir ce qui se passe et que vous ne voulez pas passer par des UUDID labyrinthiques, j'ai écrit ceci: https://github.com/kallewoof/plget
et en l’utilisant, j’ai fait ceci: https://Gist.github.com/kallewoof/de4899aabde564f62687
En gros, lorsque je veux aller dans le dossier d'une application, je fais:
$ cd ~/iosapps
$ ./app.sh
$ ls -l
total 152
lrwxr-xr-x 1 me staff 72 Nov 14 17:15 My App Beta-iOS-7-1_iPad-Retina.iapp -> iOS-7-1_iPad-Retina.dr/Applications/BD660795-9131-4A5A-9A5D-074459F6A4BF
lrwxr-xr-x 1 me staff 72 Nov 14 17:15 Other App Beta-iOS-7-1_iPad-Retina.iapp -> iOS-7-1_iPad-Retina.dr/Applications/A74C9F8B-37E0-4D89-80F9-48A15599D404
lrwxr-xr-x 1 me staff 72 Nov 14 17:15 My App-iOS-7-1_iPad-Retina.iapp -> iOS-7-1_iPad-Retina.dr/Applications/07BA5718-CF3B-42C7-B501-762E02F9756E
lrwxr-xr-x 1 me staff 72 Nov 14 17:15 Other App-iOS-7-1_iPad-Retina.iapp -> iOS-7-1_iPad-Retina.dr/Applications/5A4642A4-B598-429F-ADC9-BB15D5CEE9B0
-rwxr-xr-x 1 me staff 3282 Nov 14 17:04 app.sh
lrwxr-xr-x 1 me staff 158 Nov 14 17:15 com.mycompany.app1-iOS-8-0_iPad-Retina.iapp -> /Users/me/Library/Developer/CoreSimulator/Devices/129FE671-F8D2-446D-9B69-DE56F1AC80B9/data/Containers/Data/Application/69F7E3EF-B450-4840-826D-3830E79C247A
lrwxr-xr-x 1 me staff 158 Nov 14 17:15 com.mycompany.app1-iOS-8-1_iPad-Retina.iapp -> /Users/me/Library/Developer/CoreSimulator/Devices/414E8875-8875-4088-B17A-200202219A34/data/Containers/Data/Application/976D1E91-DA9E-4DA0-800D-52D1AE527AC6
lrwxr-xr-x 1 me staff 158 Nov 14 17:15 com.mycompany.app1beta-iOS-8-0_iPad-Retina.iapp -> /Users/me/Library/Developer/CoreSimulator/Devices/129FE671-F8D2-446D-9B69-DE56F1AC80B9/data/Containers/Data/Application/473F8259-EE11-4417-B04E-6FBA7BF2ED05
lrwxr-xr-x 1 me staff 158 Nov 14 17:15 com.mycompany.app1beta-iOS-8-1_iPad-Retina.iapp -> /Users/me/Library/Developer/CoreSimulator/Devices/414E8875-8875-4088-B17A-200202219A34/data/Containers/Data/Application/CB21C38E-B978-4B8F-99D1-EAC7F10BD894
lrwxr-xr-x 1 me staff 158 Nov 14 17:15 com.mycompany.otherapp-iOS-8-1_iPad-Retina.iapp -> /Users/me/Library/Developer/CoreSimulator/Devices/414E8875-8875-4088-B17A-200202219A34/data/Containers/Data/Application/DE3FF8F1-303D-41FA-AD8D-43B22DDADCDE
lrwxr-xr-x 1 me staff 51 Nov 14 17:15 iOS-7-1_iPad-Retina.dr -> simulator/4DC11775-F2B5-4447-98EB-FC5C1DB562AD/data
lrwxr-xr-x 1 me staff 51 Nov 14 17:15 iOS-8-0_iPad-2.dr -> simulator/6FC02AE7-27B4-4DBF-92F1-CCFEBDCAC5EE/data
lrwxr-xr-x 1 me staff 51 Nov 14 17:15 iOS-8-0_iPad-Retina.dr -> simulator/129FE671-F8D2-446D-9B69-DE56F1AC80B9/data
lrwxr-xr-x 1 me staff 51 Nov 14 17:15 iOS-8-1_iPad-Retina.dr -> simulator/414E8875-8875-4088-B17A-200202219A34/data
lrwxr-xr-x 1 me staff 158 Nov 14 17:15 org.cocoapods.demo.pajdeg-iOS-8-0_iPad-Retina.iapp -> /Users/me/Library/Developer/CoreSimulator/Devices/129FE671-F8D2-446D-9B69-DE56F1AC80B9/data/Containers/Data/Application/C3069623-D55D-462C-82E0-E896C942F7DE
lrwxr-xr-x 1 me staff 51 Nov 14 17:15 simulator -> /Users/me/Library/Developer/CoreSimulator/Devices
La partie ./app.sh
synchronise les liens. De nos jours, il est indispensable de toujours que les applications changent d'UUID pour chaque exécution dans Xcode à partir de la version 6.0. De plus, malheureusement, les applications sont classées par ID de bundle pour 8.x et par nom d’application pour <8.
Basé sur la réponse d'Ankur mais pour nous Swift utilisateurs:
let urls = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)
println("Possible sqlite file: \(urls)")
Placez-le dans ViewDidLoad et il sera imprimé immédiatement après l'exécution de l'application.
La meilleure façon de trouver le chemin est de le faire via un code.
En utilisant Swift, collez simplement le code ci-dessous dans la fonction application dans votre AppDelegate.Swift
let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
let documentsPath = paths.first as String
println(documentsPath)
Pour le code Obj-C, regardez la réponse de @Ankur
Le répertoire du simulateur a été déplacé avec Xcode 6 beta vers ...
~/Library/Developer/CoreSimulator
La navigation dans le répertoire du dossier Documents de votre application est un peu plus ardue, par exemple,
~/Library/Developer/CoreSimulator/Devices/4D2D127A-7103-41B2-872B-2DB891B978A2/data/Containers/Data/Application/0323215C-2B91-47F7-BE81-EB24B4DA7339/Documents/MyApp.sqlite
Pour Swift 3.x
if let documentsPath = FileManager.default.urls(for:.documentDirectory, in: .userDomainMask).first?.path {
print("Documents Directory: " + documentsPath)
}
if let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory,
.userDomainMask,
true).first {
debugPrint("documentsPath = \(documentsPath)")
}