Ruta del directorio de documentos del simulador beta de iOS 8

En iOS 7, el directorio de documentos de los simuladores de iOS se puede encontrar en:

/Users/Sabo/Library/Application Support/iPhone Simulator/ 

Sin embargo, en iOS 8 Beta Simulator , no puedo encontrar el directorio correspondiente para iOS 8 en el directorio anterior.

¿Dónde está la ruta del directorio de documentos para el simulador de iOS 8?

enter image description here

en mi computadora, la ruta es:

 ~/Library/Developer/CoreSimulator/Devices/1A8DF360-B0A6-4815-95F3-68A6AB0BCC78/data/Container/Data/Application/ 

NOTA: probablemente esos ID largos (es decir, UDID) son diferentes en su computadora.

NSLog debajo del código en algún lugar de “AppDelegate”, ejecute su proyecto y siga la ruta. Será fácil para usted acceder a los documentos en lugar de buscar aleatoriamente en “~ / Library / Developer / CoreSimulator / Devices /”

C objective

 NSLog(@"%@",[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]); 

Rápido
Si está utilizando Swift 1.2, use el siguiente código que solo generará en desarrollo cuando use el simulador debido al bloque #if #endif :

 #if arch(i386) || arch(x86_64) let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as! NSString NSLog("Document Path: %@", documentsPath) #endif 

Copie su ruta de “/ Users / ankur / Library / Developer / CoreSimulator / Devices / 7BA821 …” vaya a ” Finder ” y luego ” Ir a la carpeta ” o comando + shift + g y pegue su ruta, deje que el mac tome usted a su directorio de documentos 🙂

Simplemente escriba el código de abajo en AppDelegate -> didFinishLaunchingWithOptions
C objective

 #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 

Salida
/ Users / mitul_marsonia / Library / Developer / CoreSimulator / Devices / E701C1E9-FCED-4428-A36F-17B32D32918A / data / Containers / Data / Application / 25174F64-7130-4B91-BC41-AC74257CCC6E / Documents

Copie su ruta desde “/ Users / mitul_marsonia / Library / Developer / CoreSimulator / Devices / E701C1E9-FCED-4428-A36F-17B32D32918A …” vaya a “Finder” y luego “Ir a la carpeta” o comando + shift + g y pegue su camino , deje que el mac lo lleve a su directorio de documentos

Recomiendo una buena aplicación de utilidad llamada SimPholders que hace que sea fácil encontrar los archivos y carpetas mientras desarrolla su aplicación iOS. Tiene una nueva versión para trabajar con los nuevos simuladores llamados SimPholders2. Se puede encontrar en simpholders.com

A pesar de que aquí hay muchas respuestas, ninguna de ellas proporciona una comprensión de cómo ha cambiado la estructura de carpetas de los simuladores iOS 8.3 y no proporciona una forma rápida de encontrar los datos de la aplicación (carpeta Documentos).

Desde iOS 8, la (s) carpeta (s) de almacenamiento de datos de una aplicación son independientes de los archivos ejecutables de la aplicación, mientras que iOS 7 y siguientes tienen la misma estructura de carpetas, la única diferencia es el hecho de que todos los simuladores (diferentes tipos y versiones) ahora en una, gran carpeta.

Entonces, la ruta a un simulador iOS 8,7,6 es la siguiente:

 ~/Library/Developer/CoreSimulator/Devices 

Cada simulador ahora está contenido en una carpeta nombrada con un identificador único que cambia en cada reinicio de un simulador.

Puede encontrar el Identifier para cada uno de sus dispositivos y simuladores yendo a Xcode > Window > Devices (los primeros 3 o 4 caracteres del identificador son más que suficientes para recordar).

Para encontrar el dispositivo en el que ha instalado su (s) aplicación (es), eche un vistazo a su Run scheme > devices (pantalla 2).

pantalla 1

pantalla 2

Ahora, después de identificar su simulador, dependiendo de su versión, la estructura de la carpeta es muy diferente:

En iOS 8, el ejecutable y la carpeta de datos de una aplicación se encuentran en diferentes carpetas:

Ejecutable : ~/Library/Developer/CoreSimulator/Devices/[simID]/data/Containers/Bundle/Application/[appID]

Carpeta de datos : ~/Library/Developer/CoreSimulator/Devices/[simID]/data/Containers/Data/Application/[appID]/

Carpeta de documentos : ~/Library/Developer/CoreSimulator/Devices/[simID]/data/Containers/Data/Application/[appID]/Documents

En iOS 7 y versiones inferiores, la estructura de carpetas es la misma que antes, pero recuerde que ahora todos los simuladores se encuentran en la misma carpeta (ver arriba).

Si su aplicación utiliza CoreData, un ingenioso truco es buscar el nombre del archivo sqlite usando el terminal.

 find ~ -name my_app_db_name.sqlite 

Los resultados mostrarán las rutas completas de los archivos a cualquier simulador que haya ejecutado su aplicación.

Realmente me gustaría que Apple simplemente agregue un botón al menú del archivo del simulador de iOS como “Mostrar carpeta de documentos en el buscador”.

Es correcto que tenemos que mirar en la ruta ~ / Library / Developer / CoreSimulator / Devices /.

Pero el problema que estoy viendo es que la ruta cambia constantemente cada vez que ejecuto la aplicación. La ruta contiene otro conjunto de ID largos después de la cadena de la Aplicación y eso cambia constantemente cada vez que ejecuto la aplicación. Esto básicamente significa que mi aplicación no tendrá ningún dato en caché cuando se ejecute la próxima vez.

Con la adopción de CoreSimulator en Xcode 6.0, los directorios de datos son por dispositivo en lugar de por versión. El directorio de datos es ~ / Library / Developer / CoreSimulator / Devices // data donde se puede determinar desde ‘xcrun simctl list’

Tenga en cuenta que puede eliminar de manera segura ~ / Library / Application Support / iPhone Simulator y ~ / Library / Logs / iOS Simulator si no planea tener que retroceder a Xcode 5.xo anterior.

Con iOS 9.2 y Xcode 7.2, la siguiente secuencia de comandos abrirá la carpeta Documentos de la última aplicación instalada en el último simulador utilizado;

 cd ~/Library/Developer/CoreSimulator/Devices/ cd `ls -t | head -n 1`/data/Containers/Data/Application cd `ls -t | head -n 1`/Documents open . 

Para crear un script fácil de ejecutar, colóquelo en una aplicación de Automator con “Ejecutar script de shell”:

Ejecute Shell Script dentro de la aplicación Automator

actualización: 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 } 

Vaya a su Finder presione command-shift-g (o vaya> ir a la carpeta … debajo de la barra del menú) y pegue esa ruta completa “var / folder /…/ documents” allí y presione ir.

Pruebe ~/Library/Developer/CoreSimulator/Devices/

Los simuladores se encuentran en:

~/Library/Developer/CoreSimulator/

Aquí, se enumeran como directorios con nombres de UUID. Utilice ordenar por ‘Fecha de modificación’ para encontrar la última. Dentro de navegar a:

/data/Containers/Data/Application/

Aquí obtendrá una lista de todas las aplicaciones en ese dispositivo. Puede volver a ordenar esto para obtener la última aplicación.

NOTA: Xcode cambia el nombre del directorio cada vez que ejecuta la aplicación, así que no confíe en hacer alias / atajos en el escritorio.

La forma más fácil es usar la aplicación aquí , que hace todo automáticamente.

Me enfrenté al mismo problema cuando almacené la ruta completa usando CoreData. Al recuperar la ruta completa, devuelve null porque la UUID de la carpeta del documento es diferente cada vez que se reinicia la aplicación. Lo que sigue es mi resolución:

  1. Asegúrese de almacenar solo la ruta relativa del documento / archivo en CoreData. Por ejemplo, almacene “Files / image.jpg” en lugar de “/Users/yourname/…/Applications/UUID/Document/Files/image.jpg”.
  2. Use lo siguiente para recuperar la ubicación del documento de la aplicación:

[[[NSFileManager defaultManager] URLsForDirectory: NSDocumentDirectory inDomains: NSUserDomainMask] lastObject];

  • Concatenar # 2 y # 1 para obtener la ruta completa del documento / archivo que desea recuperar.
  • Puede consultar la Nota del desarrollador de Apple: https://developer.apple.com/library/ios/technotes/tn2406/_index.html

    Dónde está el directorio de documentos para el simulador de iOS 8

    Puede haber notado que el simulador de iPhone ha cambiado con Xcode 6 y, por supuesto, con la ruta al directorio de documentos de sus aplicaciones simuladas. A veces es posible que tengamos que echarle un vistazo.

    Encontrar ese camino no es tan fácil como antes, es decir, Biblioteca / Soporte de aplicaciones / iPhone Simulator / 7.1 / Aplicaciones / seguido de un número críptico que representa su aplicación.

    A partir de Xcode 6 e iOS 8, aquí lo encontrará: Biblioteca / Desarrollador / CoreSimulator / Devices / críptico número / data / Containers / Data / Application / cryptic number

    http://pinkstone.co.uk/where-is-the-documents-directory-for-the-ios-8-simulator/

    en Appdelegate, coloque este código para ver Dir de documento y caché:

     #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 

    en el registro:

    Directorio de documentos: / Users / xxx / Library / Developer / CoreSimulator / Devices / F90BBF76-C3F8-4040-9C1E-448FAE38FA5E / data / Containers / Data / Application / 3F3F6E12-EDD4-4C46-BFC3-58EB64D4BCCB / Documents /

    Directorio de caché: / Users / xxx / Library / Developer / CoreSimulator / Devices / F90BBF76-C3F8-4040-9C1E-448FAE38FA5E / data / Containers / Data / Application / 3F3F6E12-EDD4-4C46-BFC3-58EB64D4BCCB / Library / Caches

    Si desea acceder a las carpetas de la aplicación para ver qué sucede y no desea tener que pasar por la laberíntica UUDID, hice esto: https://github.com/kallewoof/plget

    y al usarlo, hice esto: https://gist.github.com/kallewoof/de4899aabde564f62687

    Básicamente, cuando quiero ir a la carpeta de alguna aplicación, lo hago:

     $ 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 parte ./app.sh sincroniza los enlaces. Básicamente, siempre es necesario, ya que las aplicaciones cambian UUID por cada ejecución en Xcode a partir de 6.0. Además, desafortunadamente, las aplicaciones son por ID de paquete para 8.x y por nombre de aplicación para <8.

    Basado en la respuesta de Ankur, pero para nosotros los usuarios de Swift:

     let urls = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask) println("Possible sqlite file: \(urls)") 

    Póngalo dentro de ViewDidLoad y se imprimirá inmediatamente después de la ejecución de la aplicación.

    El directorio del simulador se ha movido con Xcode 6 beta a …

      ~/Library/Developer/CoreSimulator 

    Navegar por el directorio a la carpeta Documentos de su aplicación es un poco más arduo, por ejemplo,

     ~/Library/Developer/CoreSimulator/Devices/4D2D127A-7103-41B2-872B-2DB891B978A2/data/Containers/Data/Application/0323215C-2B91-47F7-BE81-EB24B4DA7339/Documents/MyApp.sqlite 

    La mejor forma de encontrar el camino es hacerlo a través del código.

    Usando Swift, simplemente pegue el siguiente código dentro de la aplicación de función en su AppDelegate.swift

     let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true) let documentsPath = paths.first as String println(documentsPath) 

    Para el código Obj-C, mira la respuesta de @Ankur

    Para Swift 3.x

     if let documentsPath = FileManager.default.urls(for:.documentDirectory, in: .userDomainMask).first?.path { print("Documents Directory: " + documentsPath) } 

    iOS 11

     if let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first { debugPrint("documentsPath = \(documentsPath)") }