Pregunta Datos básicos de ubicación de archivos Sqlite


Normalmente, el archivo de tienda sqlite para aplicaciones de datos centrales se encuentra en

Biblioteca> Soporte de aplicación> iPhone Simulator> 7.1 (o la versión que esté utilizando)> Aplicaciones> (Cualquiera que sea la carpeta que contenga su aplicación)> Documentos

carpeta, pero no puedo encontrarlo en IOS 8. Asumiría que solo agregarían una carpeta 8.0 dentro de la carpeta de iPhone Simulator, pero no está allí. ¿Alguien ha sido capaz de localizarlo?


75
2018-06-10 04:45


origen


Respuestas:


Logré localizar el archivo sqlite, y ahora está en esta ruta:

Biblioteca / Desarrollador / CoreSimulator / Devices / (números y letras) / data / Containers / Data / Application / (números y letras) / Documents /

(números y letras) representa una carpeta que sería exclusiva de su aplicación / computadora, pero se vería así: 779AE2245-F8W2-57A9-8C6D-98643B1CF01A

Pude encontrarlo yendo a appDelegate.m, desplazándome hacia abajo

- (NSURL *)applicationDocumentsDirectory 

método y NSLogging la ruta de retorno, así:

// Returns the URL to the application's Documents directory.
- (NSURL *)applicationDocumentsDirectory
{
    NSLog(@"%@",[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory  inDomains:NSUserDomainMask] lastObject]);

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

Esto le dará su camino único, haciéndolo más fácil, porque es complicado ubicarlo con las 2 carpetas / cadenas de letras y números sin nombre.


119
2018-06-11 00:57



Prueba este Simple 3 Step

  1. Copia el siguiente código en didFinishLaunchingWithOptions tu appdelegate.m y agregue un punto de quiebre antes del NSLog()

    (BOOL)application:(UIApplication *)application  
    
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSLog(@"%@",[paths objectAtIndex:0]);
     }
    

O en Swift:

let paths = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)
print(paths[0])

enter image description here

2. Abre Finder-> Ir -> Ir a la carpeta y pegar la ruta copiada desde el paso 1

enter image description here

3. ¡Yah! Estás en tu Destino.


51
2017-12-13 16:51



Si su aplicación está utilizando Core Data, solo es cuestión de buscar el archivo sqlite en Terminal:

find ~ -name app_db_file_name.sqlite

Los resultados mostrarán la ruta completa a las carpetas del simulador que contiene su aplicación.


37
2017-09-19 15:44



Ninguna de las respuestas mencionó la forma más sencilla de obtener realmente la ubicación del archivo DB.

Ni siquiera requiere que modifique su código fuente, ya que es un simple cambio de tiempo de ejecución en XCode.

  1. Elija Editar esquema ... al lado del botón Ejecutar.

    edit scheme

  2. Seleccione Ejecutar / Argumentos y agregue las siguientes dos opciones:

    -com.apple.CoreData.SQLDebug 1
    -com.apple.CoreData.Logging.stderr 1
    

    option

  3. Ejecute la aplicación, y verá en los registros:

    logs


21
2017-11-20 22:49



Corté este one-liner (Esencia) find ~/Library/Developer/CoreSimulator/Devices/ -name device.plist -exec sh -c "/usr/libexec/PlistBuddy -c \"print UDID\" '{}' | tr '\n' ' '" \; -exec sh -c "/usr/libexec/PlistBuddy -c \"print name\" '{}' | tr '\n' ' '" \; -exec sh -c "/usr/libexec/PlistBuddy -c \"print runtime\" '{}' | sed -n 's/com\.apple\.CoreSimulator.SimRuntime\.\(.*\)/\1/p'" \;

Esto imprime:

14F313C8-3813-4E38-903E-2010C136B77B iPad Retina iOS-8-0
1F6B82A2-C467-479A-8CAF-074BE507AC8E iPad Air iOS-8-0
2DA83944-BE5D-4342-B330-08F67A932D8C iPad 2 iOS-7-1
48703432-A5C5-4606-9369-0D21B53EB1E8 iPhone 4s iOS-7-1
4AFB71CC-6752-4F9A-A239-4DC9CA53A8B8 iPhone 5s iOS-8-0
53A65771-DF50-4A5C-A8D2-4D1C3A5D0F60 iPhone 5 iOS-7-1
6B97C174-5914-4E89-8D17-943F0E2703BA iPhone 5 iOS-8-0
6C2DF3E9-FA26-4391-8B66-72E1467D6297 iPad 2 iOS-8-0
7F85E299-A3C2-4704-8B44-2984F6F995F5 iPad Retina iOS-7-1
8B9EDFFD-2240-476B-88AD-06ABE8F9FF51 iPhone 6 Plus iOS-8-0
97691E5D-5C38-4875-8AA7-C2B1E4ABCBB5 Resizable iPhone iOS-8-0
9BBF3408-6CA4-4CE0-BD4E-B02001F1262B iPhone 5s iOS-7-1
C9237847-F0AA-44BC-A74E-C08C2E0F7A6C Resizable iPad iOS-8-0
CC44C1BA-F39C-4410-AE34-4ABBD7806D45 iPad Air iOS-7-1
CDF4D811-5011-4464-8291-5CDA378375EA iPhone 6 iOS-8-0
E77DE00C-E244-4F25-A5E2-E6581614D5A2 iPhone 4s iOS-8-0

Actualizar:

Como alguien señaló aquí, también es posible correr xcrun simctl list devices para obtener un resultado similar:

== Devices ==
-- iOS 7.0 --
-- iOS 7.1 --
    iPhone 4s (48703432-A5C5-4606-9369-0D21B53EB1E8) (Shutdown)
    iPhone 5 (53A65771-DF50-4A5C-A8D2-4D1C3A5D0F60) (Shutdown)
    iPhone 5s (9BBF3408-6CA4-4CE0-BD4E-B02001F1262B) (Shutdown)
    iPad 2 (2DA83944-BE5D-4342-B330-08F67A932D8C) (Shutdown)
    iPad Retina (7F85E299-A3C2-4704-8B44-2984F6F995F5) (Shutdown)
    iPad Air (CC44C1BA-F39C-4410-AE34-4ABBD7806D45) (Shutdown)
-- iOS 8.1 --
    iPhone 4s (0763EF65-DD0D-4FAD-84C7-2DE63D416526) (Shutdown)
    iPhone 5 (868ED444-8440-4115-AF37-F419CC682D2F) (Shutdown)
    iPhone 5s (E0455E5D-7315-4EC8-B05E-76284728244C) (Shutdown)
    iPhone 6 Plus (72554908-FF99-4B8F-9B87-65255ED08CFC) (Shutdown)
    iPhone 6 (32AA8133-53A4-4BE0-8CE5-0C7A87E81CAF) (Shutdown)
    iPad 2 (4AF84DE8-CBA2-47AE-A92A-0C0CEF9F41F8) (Booted)
    iPad Retina (69238B44-AAFD-4CD5-AAEA-C182D0BC300D) (Shutdown)
    iPad Air (E580AD99-0040-4EC1-B704-0C85567E6747) (Shutdown)
    Resizable iPhone (32E872FC-6513-41AB-A5B9-B23EB7D10DC8) (Shutdown)
    Resizable iPad (99997922-4A9F-4574-9E3E-EF45F893F4A2) (Shutdown)

19
2017-09-23 13:19



Si estás usando Rápido, esto devolverá la ruta absoluta del directorio de documentos:

func applicationDirectoryPath() -> String {
    return NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true).last! as String
}

17
2017-09-10 10:20



Escribí un script bash para encontrar la ubicación de su carpeta de aplicaciones y la carpeta de datos de la aplicación dentro de un simulador, puede descargarlo aquí. Una vez que haya descomprimido el script, puede navegar a la carpeta donde está el script y usarlo. Si lo llamas sin opciones, te dará una lista de los simuladores de iOS instalados. Luego puede usar las opciones para encontrar su programa. Escritura:

./simulatorAppFolders -s "iPad Air" -i iOS-8-0 -a <MyApp>

encontrará la carpeta de la aplicación y la carpeta del área local de su aplicación en el simulador de iPad Air iOS 8. Aquí hay un ejemplo:

MacBook-Air:_posts user$ ./simulatorAppFolders -s "iPad Air" -i iOS-8-0 -a MyApp
App folder = /Users/james/Library/Developer/CoreSimulator/Devices/6A9DEE93-FAEF-4BF4-9989-BC14CD38AEA0/data/Containers/Bundle/Application/8F64CD7F-A227-43D6-98AC-41D3919827CB
dataFolder = /Users/james/Library/Developer/CoreSimulator/Devices/6A9DEE93-FAEF-4BF4-9989-BC14CD38AEA0/data/Containers/Data/Application/96C40A21-5A5C-4399-839C-B155B8A72932

Actualizar

Hay una actualización del script original que le permite buscar según el tipo de dispositivo usando una opción -d. También escribí otro script que crea una serie de carpetas con nombres sensatos para que pueda encontrar su aplicación y documentos de aplicación. Este script creará una carpeta llamada iOS_SIMULATORS en su área de origen y desde allí podrá navegar fácilmente a su aplicación.


13
2017-09-15 19:34



Pude localizar la carpeta de simuladores con la siguiente salida de consola:

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

en mi caso fue (Xcode 6 beta)

app dir: file:///Users/user/Library/Developer/CoreSimulator/Devices/D00C56D4-DDA3-47B0-9951-27D3B9EC68E8/data/Applications/6ABF3E54-37F5-4AD1-A223-F7467F601FB6/Documents/

6
2017-08-30 22:00



Basado en las respuestas de Michaels, esto es para Swift 3

    func applicationDirectoryPath() -> String {
        return NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).last! as String
    }

5
2017-08-28 06:24



Para Swift 3.0

let paths = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.userDomainMask, true)
print(paths[0])

puedes obtener la ubicación de Coredata en Xcode 8.2


4
2018-02-03 09:05



Para SWIFT 3:

Copia y pega este código en didFinishLaunchingWithOptions

 print(NSSearchPathForDirectoriesInDomains(.applicationSupportDirectory, .userDomainMask, true).last! as String)

4
2018-03-27 06:39