it-swarm.com.de

Support-Standort für die Xcode 6 iPhone Simulator-Anwendung

In Xcode 6 habe ich eine App, in der ich Core Data verwende, aber im Anwendungssupport gibt es keinen Ordner für den iOS 8 iPhone Simulator. Wo werden meine Dateien und die SQLite-Datenbank von Core Data gespeichert?

136

Das Simulator-Verzeichnis wurde mit Xcode 6 Beta nach ... verschoben.

~/Library/Developer/CoreSimulator

Das Durchsuchen des Verzeichnisses zum Ordner "Dokumente" Ihrer App ist etwas schwieriger, z.

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

Ich würde vorschlagen, dass Sie SimPholders verwenden, um Ihre Simulator-Dateien zu finden. Es ist ein Menüleistenelement, mit dem Sie Ihre Simulator-Apps verfolgen und direkt zu deren Ordnern und Inhalten wechseln können. Es ist toll.

36
ucangetit

Ich fand SimulatorManager Anwendung sehr nützlich. Sie gelangen direkt in den Anwendungsordner der installierten Simulatoren. Ich habe es mit 7.1, 8.0 und 8.1 Simulatoren versucht.

SimulatorManager befindet sich als Symbol in der Taskleiste und bietet die Option "Bei Anmeldung starten".

enter image description here

Hinweis : Dies funktioniert nur mit Xcode 6 (6.1.1 in meinem Fall) und höher.

Ich hoffe, das hilft!

21
Amar

Um zu wissen, wo Ihre .sqlite-Datei in Ihrer AppDelegate.m gespeichert ist, fügen Sie den folgenden Code hinzu

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

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

rufen Sie diese Methode jetzt in AppDelegate.m auf

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

  //call here
   [self applicationDocumentsDirectory];

}
11
himan

Das hat bei mir in Swift geklappt:

let dirPaths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
println("App Path: \(dirPaths)")
6
Nate Uni

Öffnen Sie Finder> Library> Developer> CoreSimulator> Devices

Wählen Sie dann im Finder das Symbol "Arrangement ändern" und anschließend "Aufnahmedatum"

Wählen Sie Ihre App> Daten> Container> Daten> Anwendungen>

wählen Sie Ihre App> Dokumente> Hier ist Ihre DB-Datei

In meinem Fall:

/Users/pluto/Library/Developer/CoreSimulator/Devices/A75107D2-A535-415A-865D-978B2555370B/data/Containers/Data/Application/265A12BC-FF5B-4235-B5EF-6022B83754B4/Documents/dboPhotoBucket.sqlite

Ansonsten mache folgendes:

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

- Der vollständige Pfad zum Datenordner wird gedruckt.

Schnell:

let dirPaths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
println("App Path: \(dirPaths)")
3
Nagarjun

Ich habe einige Zeit damit gerungen. Es wurde ein großer Schmerz, einfach zu meiner lokalen SQLite-Datenbank zu gelangen. Ich habe dieses Skript geschrieben und es zu einem Code-Snippet in XCode gemacht. Ich platziere es in meinem appDidFinishLaunching in meinem 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

Dadurch wird ein Simlink im Stammverzeichnis Ihres Laufwerks erstellt. (Möglicherweise müssen Sie diesen Ordner das erste Mal selbst erstellen und chmod, oder Sie können den Speicherort an einem anderen Ort ändern.) Dann habe ich das xcodeway Plugin installiert https://github.com/onmyway133/XcodeWay

Ich habe es ein wenig modifiziert, damit ich einfach cmd + d drücken kann, und es öffnet einen Finder-Wickler für das permanente Dokumentenverzeichnis meiner aktuellen Anwendung. Auf diese Weise ändert XCode Ihren Pfad, unabhängig davon, wie oft er sich ändert, nur während des Laufs und aktualisiert Ihren Simlink sofort bei jedem Lauf.

Ich hoffe das ist nützlich für andere!

3
seabass

Verwenden Sie den Finder -> gehe zum Ordner und gib den angegebenen Basispfad ein, um zu den Anwendungsordnern zu gelangen

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

NSLog(@"%@",basePath);
2
user1039695

Dieser Speicherort hat sich erneut geändert. Wenn Sie Swift verwenden, können Sie hiermit herausfinden, wo sich der Ordner befindet (dies wird aus der AppDelegate.Swift-Datei kopiert, die Apple für Sie erstellt, falls dies nicht der Fall ist) funktioniert nicht auf Ihrem Computer, suchen Sie in dieser Datei nach der richtigen Syntax. Dies funktioniert auf meinem Computer unter Verwendung von Xcode 6.1 und iOS 8 (Simulator):

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

Der Simulator legt die Datei in ~/Library/Developer/CoreSimulator/Devices/... ab, aber der Pfad nach/Devices ist für alle unterschiedlich.

Verwenden Sie diese praktische Methode. Es gibt den Pfad des temporären Verzeichnisses für den aktuellen Benutzer zurück und akzeptiert kein Argument.

NSString * NSTemporaryDirectory ( void );

Daher füge ich in meiner ViewController-Klasse diese Zeile normalerweise nur als Referenz in mein viewDidLoad ein, wenn ich meine in CoreData gespeicherte Datei abrufen muss. Hoffe das hilft.

  NSLog(@"FILE PATH :%@", NSTemporaryDirectory());

(Hinweis: Um zum Pfad zu gelangen, klicken Sie im Finder-Menü auf "Gehe zu" und geben Sie "~/Library" ein, um das ausgeblendete Verzeichnis zu öffnen. Anschließend können Sie im Finder-Fenster auf den in Ihrer Konsole angezeigten Pfad klicken.)

1
Ohmy

Die Simulatoren befinden sich unter:

~/Library/Developer/CoreSimulator/

Hier werden sie als Verzeichnisse mit UUID-Namen aufgelistet. Verwenden Sie die Sortierung nach "Änderungsdatum", um das neueste zu finden. Drinnen navigieren zu:

/data/Containers/Data/Application/

Hier erhalten Sie eine Liste aller Anwendungen auf diesem Gerät. Sie können dies erneut sortieren, um die neueste App zu erhalten.

HINWEIS: Xcode ändert den Verzeichnisnamen jedes Mal, wenn Sie die App ausführen. Verlassen Sie sich also nicht darauf, auf dem Desktop Alias-/Kurzbefehle zu erstellen.

Am einfachsten geht es mit der App hier , die alles automatisch erledigt.

1
NSRover

Ich habe dieses Skript erstellt, das die neueste für jeden Simulator erstellte App komprimiert und auf den Desktop komprimiert.

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"
1
Andy
 1.   NSTemporaryDirectory() gives this:

    /Users/spokaneDude/Library/Developer/CoreSimulator/Devices/1EE69744-255A-45CD-88F1-63FEAD117B32/data/Containers/Data/Application/199B1ACA-A80B-44BD-8E5E-DDF3DCF0D8D9/tmp

 2. remove "/tmp" replacing it with "/Library/Application Support/<app name>/"  --> is where the .sqlite files reside
0
SpokaneDude

In Swift 4 oder Swift 5 können Sie NSHomeDirectory() verwenden.

Der einfachste Weg in Xcode 10 (oder Xcode 11) ist, Ihre App anzuhalten (zB wenn sie einen Haltepunkt erreicht) und diese Zeile in der Debugger-Konsole auszuführen:

po NSHomeDirectory()

po steht für print object und druckt die meisten Dinge

0
exp
  1. Mit Swift 4 können Sie den folgenden Code verwenden, um das Basisverzeichnis Ihrer App abzurufen. Das Dokumentverzeichnis Ihrer App befindet sich dort.

    print(NSHomeDirectory())

  2. Ich glaube, Sie wissen bereits, dass das Basisverzeichnis Ihrer App geändert werden kann. Wenn Sie also keinen zusätzlichen Code zu Ihrer Codebasis hinzufügen möchten, ist SimPholder ein nützliches Tool für Sie.

  3. Darüber hinaus gibt es möglicherweise ein Tool, mit dem Sie Zeit sparen können, wenn Sie dieselbe SQLite-Datenbank jedes Mal schließen und erneut öffnen, nachdem das Basisverzeichnis Ihrer App geändert wurde. Und die Antwort ist ja, ein mir bekanntes Tool ist SQLiteFlow . Aus dem Dokument geht hervor, dass:

    Behandeln Sie Datenbankdateinamen oder Verzeichnisänderungen. Dadurch kann SQLiteFlow mit Ihrer SQLite-Datenbank im iOS-Simulator benutzerfreundlich arbeiten.

0
Tim

Hier ist das sh für den zuletzt verwendeten Simulator und die zuletzt verwendete Anwendung. Führen Sie einfach sh aus und kopieren Sie gedruckten Text und fügen Sie den Befehl zum Anzeigen im Finder ein.

#!/bin/zsh

lastUsedSimulatorAndApplication=`ls -td -- ~/Library/Developer/CoreSimulator/Devices/*/data/Containers/Data/Application/*/ | head -n1`

echo $lastUsedSimulatorAndApplication
0
zapdroid