[ios] Xcode 6 iPhone Simulator Posizione del supporto dell'applicazione


Answers

Suggerirei di utilizzare SimPholders per trovare i file del simulatore. È un elemento della barra dei menu che tiene traccia delle app del simulatore e consente di accedere direttamente alle loro cartelle e ai loro contenuti. È meraviglioso.

Question

In Xcode 6, ho un'app in cui sto utilizzando Core Data, ma non ci sono cartelle in Application Support per iOS 8 iPhone Simulator. Dove sono archiviati i miei file e il database sqlite di Core Data?




Questa posizione è, ancora una volta, cambiata, se usi Swift, usalo per scoprire dove si trova la cartella (questo è copiato dal file AppDelegate.swift che Apple crea per te, quindi se non funziona sulla tua macchina, cerca in quel file per la sintassi corretta, questo funziona sul mio usando il simulatore Xcode 6.1 e iOS 8):

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



Per sapere dove è archiviato il file .sqlite in AppDelegate.m, aggiungere il seguente codice

- (NSURL *)applicationDocumentsDirectory
{
    NSLog(@"%@",[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory      inDomains:NSUserDomainMask] lastObject]);

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

ora chiama questo metodo in AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

  //call here
   [self applicationDocumentsDirectory];

}



Ho creato questo script che comprime l'ultima app creata per qualsiasi simulatore e la carica sul desktop.

https://gist.github.com/Gerst20051/8ca49d5afbf09007b3696fab6e9f425c

#!/bin/bash

DESTINATION_DIR="$HOME/Desktop"
APP_PATH=$(find ~/Library/Developer/CoreSimulator/Devices/*/data/Containers/Bundle/Application/*/*.app -type d -maxdepth 0 -print0 | xargs -0 ls -td | head -n1)
APP_DIRNAME=$(dirname "$APP_PATH")
APP_BASENAME=$(basename "$APP_PATH")
FILE_NAME="${APP_BASENAME%.*}"

cd "$APP_DIRNAME"
zip -qr "$DESTINATION_DIR/$FILE_NAME.zip" "$APP_BASENAME"



Usa Finder -> vai alla cartella e inserisci il dato base per raggiungere le cartelle dell'applicazione

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;

NSLog(@"%@",basePath);



Ho lottato con questo per un po 'di tempo. È diventato un enorme dolore per ottenere semplicemente il mio dl sqlite locale. Ho scritto questo script e ne ho creato uno snippet di codice all'interno di XCode. Lo metto nella mia appDidFinishLaunching all'interno della mia appDelegate.


//xcode 6 moves the documents dir every time. haven't found out why yet. 

    #if DEBUG 

         NSLog(@"caching documents dir for xcode 6. %@", [NSBundle mainBundle]); 

         NSString *toFile = @"XCodePaths/lastBuild.txt"; NSError *err = nil; 

         [DOCS_DIR writeToFile:toFile atomically:YES encoding:NSUTF8StringEncoding error:&err]; 

         if(err) 
            NSLog(@"%@", [err localizedDescription]);

         NSString *appName = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleName"];   

         NSString *aliasPath = [NSString stringWithFormat:@"XCodePaths/%@", appName]; 

         remove([aliasPath UTF8String]); 

         [[NSFileManager defaultManager] createSymbolicLinkAtPath:aliasPath withDestinationPath:DOCS_DIR error:nil]; 

     #endif

Questo crea un simlink alla radice del tuo disco. (Potrebbe essere necessario creare questa cartella da solo la prima volta e modificarla, oppure modificare la posizione in un altro posto) Quindi ho installato il plugin xcodeway https://github.com/onmyway133/XcodeWay

L'ho modificato un po 'in modo che mi permettesse semplicemente di premere cmd + d e si aprirà un cercatore nella cartella Documenti persistenti della mia applicazione corrente. In questo modo, non importa quante volte XCode cambia il tuo percorso, cambia solo durante l'esecuzione e aggiorna immediatamente il tuo simlink su ogni corsa.

Spero che questo sia utile per gli altri!




Related