W iOS 7 katalog dokumentów symulatorów iOS można znaleźć w:
/Users/Sabo/Library/Application Support/iPhone Simulator/
Jednak w iOS 8 Beta Simulator nie mogę znaleźć odpowiedniego katalogu dla iOS 8 w powyższym katalogu.
Gdzie jest ścieżka do katalogu dokumentów dla symulatora iOS 8?
ios
ios8
ios-simulator
Ognista pięść
źródło
źródło
Odpowiedzi:
na moim komputerze ścieżka to:
~/Library/Developer/CoreSimulator/Devices/1A8DF360-B0A6-4815-95F3-68A6AB0BCC78/data/Container/Data/Application/
UWAGA: prawdopodobnie te długie identyfikatory (tj. UDID) są różne na twoim komputerze.
źródło
NSLog
poniżej kodu gdzieś w „AppDelegate”, uruchom swój projekt i podążaj ścieżką. Ułatwi Ci to dotarcie do dokumentów zamiast losowego wyszukiwania w „~ / Library / Developer / CoreSimulator / Devices /”Cel C
NSLog(@"%@",[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]);
Swift
Jeśli używasz języka Swift 1.2, użyj poniższego kodu, który będzie wyświetlany w fazie programowania tylko podczas korzystania z symulatora z powodu
#if
#endif
bloku:#if arch(i386) || arch(x86_64) let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as! NSString NSLog("Document Path: %@", documentsPath) #endif
Skopiuj ścieżkę z „/ Users / ankur / Library / Developer / CoreSimulator / Devices / 7BA821…” przejdź do „ Finder ”, a następnie „ Go to Folder ” lub command+ shift+ gi wklej ścieżkę, niech Mac zabierze Cię do katalog dokumentów :)
źródło
Po prostu napisz poniżej kod w AppDelegate -> didFinishLaunchingWithOptions
Objective 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
Output
/ Users / mitul_marsonia / Library / Developer / CoreSimulator / Devices / E701C1E9-FCED-4428-A36F-17B32D32918A / data / Containers / Data / Application / 25174F64-7130-4B91-BC41-AC74257CCC6E / Dokumenty
Skopiuj swoją ścieżkę z „/ Users / mitul_marsonia / Library / Developer / CoreSimulator / Devices / E701C1E9-FCED-4428-A36F-17B32D32918A ...”, przejdź do „Finder”, a następnie „Go to Folder” lub polecenie + shift + g i wklej swoją ścieżkę , niech Mac przeniesie Cię do katalogu dokumentów
źródło
Polecam fajną aplikację narzędziową o nazwie SimPholder, która ułatwia znajdowanie plików i folderów podczas tworzenia aplikacji na iOS. Ma nową wersję do współpracy z nowymi symulatorami o nazwie SimPholder2. Można go znaleźć na simpholders.com
źródło
Pomimo faktu, że tutaj jest wiele odpowiedzi, żadna z nich nie zapewnia zrozumienia, jak zmieniła się struktura folderów symulatorów iOS 8.3 i nie zapewnia szybkiego sposobu na znalezienie danych aplikacji (folder Dokumenty).
Od iOS 8 foldery przechowywania danych aplikacji są oddzielne od plików wykonywalnych aplikacji, podczas gdy iOS 7 i nowsze mają tę samą strukturę folderów, jedyną różnicą jest fakt, że wszystkie symulatory (różne typy i wersje) są teraz w jednym, dużym folderze.
Tak więc ścieżka do symulatora iOS 8,7,6 jest następująca:
~/Library/Developer/CoreSimulator/Devices
Każdy symulator jest teraz zawarty w folderze o nazwie z unikalnym identyfikatorem, który zmienia się przy każdym resetowaniu symulatora.
Możesz znaleźć
Identifier
dla każdego urządzenia i symulatorów, przechodząc doXcode > Window > Devices
(pierwsze 3 lub 4 znaki identyfikatora są więcej niż wystarczające do zapamiętania).Aby znaleźć ten, na którym zainstalowałeś swoje aplikacje, spójrz na swój
Run scheme > devices
(ekran 2).Teraz, po zidentyfikowaniu symulatora, w zależności od jego wersji, struktura folderów jest bardzo różna:
W systemie iOS 8 plik wykonywalny i folder danych aplikacji znajdują się w różnych folderach:
Wykonywalne :
~/Library/Developer/CoreSimulator/Devices/[simID]/data/Containers/Bundle/Application/[appID]
Folder danych :
~/Library/Developer/CoreSimulator/Devices/[simID]/data/Containers/Data/Application/[appID]/
Folder dokumentów :
~/Library/Developer/CoreSimulator/Devices/[simID]/data/Containers/Data/Application/[appID]/Documents
Na iOS 7 i poniżej struktura folderów jest taka sama jak wcześniej, pamiętaj tylko, że teraz każdy symulator znajduje się w tym samym folderze (patrz wyżej).
źródło
Jeśli Twoja aplikacja korzysta z CoreData, sprytną sztuczką jest wyszukanie nazwy pliku sqlite za pomocą terminala.
find ~ -name my_app_db_name.sqlite
Wyniki będą zawierać pełne ścieżki plików do wszystkich symulatorów, na których uruchomiono Twoją aplikację.
Naprawdę chciałbym, żeby Apple po prostu dodał przycisk do menu plików symulatora iOS, np. „Pokaż folder Dokumenty w Finderze”.
źródło
To prawda, że musimy zajrzeć do ścieżki ~ / Library / Developer / CoreSimulator / Devices /.
Ale problem, który widzę, polega na tym, że ścieżka zmienia się za każdym razem, gdy uruchamiam aplikację. Ścieżka zawiera kolejny zestaw długich identyfikatorów po ciągu Application, który zmienia się za każdym razem, gdy uruchamiam aplikację. Zasadniczo oznacza to, że moja aplikacja nie będzie miała żadnych danych w pamięci podręcznej, gdy zostanie uruchomiona następnym razem.
źródło
W przypadku iOS 9.2 i Xcode 7.2 następujący skrypt otworzy folder Dokumenty ostatniej zainstalowanej aplikacji na ostatnio używanym symulatorze;
cd ~/Library/Developer/CoreSimulator/Devices/ cd `ls -t | head -n 1`/data/Containers/Data/Application cd `ls -t | head -n 1`/Documents open .
Aby utworzyć łatwy do uruchomienia skrypt, umieść go w aplikacji Automatora za pomocą opcji „Uruchom skrypt powłoki”:
źródło
Po przyjęciu CoreSimulatora w Xcode 6.0 katalogi danych są przypisane do urządzenia, a nie do wersji. Katalog danych to ~ / Library / Developer / CoreSimulator / Devices // data, gdzie można określić na podstawie „xcrun simctl list”
Pamiętaj, że możesz bezpiecznie usunąć ~ / Library / Application Support / iPhone Simulator i ~ / Library / Logs / iOS Simulator, jeśli nie planujesz konieczności powrotu do Xcode 5.x lub wcześniejszej.
źródło
aktualizacja: Xcode 11.5 • Swift 5.2
if let documentsPath = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first?.path { print(documentsPath) // "var/folder/.../documents\n" copy the full path }
Przejdź do Findera i naciśnij Command-Shift-g (lub Idź> Idź do folderu ... pod paskiem menu) i wklej tam pełną ścieżkę „var / folder /.../ dokumenty” i naciśnij go.
źródło
Próbować
~/Library/Developer/CoreSimulator/Devices/
źródło
Napotkałem ten sam problem, gdy zapisałem pełną ścieżkę za pomocą CoreData. Podczas pobierania pełnej ścieżki zwraca wartość null, ponieważ identyfikator UUID folderu dokumentów jest inny przy każdym ponownym uruchomieniu aplikacji. Oto moja rezolucja:
źródło
Gdzie jest katalog dokumentów dla symulatora iOS 8
Być może zauważyłeś, że iPhone Simulator zmienił się wraz z Xcode 6, a wraz z nim - oczywiście - ścieżka do katalogu dokumentów symulowanych aplikacji. Czasami trzeba się temu przyjrzeć.
Znalezienie tej ścieżki nie jest tak łatwe, jak kiedyś, a mianowicie Biblioteka / Obsługa aplikacji / Symulator iPhone'a / 7.1 / Aplikacje /, po której następuje tajemniczy numer reprezentujący twoją aplikację.
Od Xcode 6 i iOS 8 znajdziesz go tutaj: Library / Developer / CoreSimulator / Devices / Cryptic Number / Data / Containers / Data / Application / Cryptic number
http://pinkstone.co.uk/where-is-the-documents-directory-for-the-ios-8-simulator/
źródło
w Appdelegate umieść ten kod, aby wyświetlić katalog dokumentów i pamięci podręcznej:
#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
w dzienniku:
Katalog dokumentów: / Users / xxx / Library / Developer / CoreSimulator / Devices / F90BBF76-C3F8-4040-9C1E-448FAE38FA5E / data / Containers / Data / Application / 3F3F6E12-EDD4-4C46-BFC3-58EB64D4BCCB / Documents /
Katalog pamięci podręcznej: / Users / xxx / Library / Developer / CoreSimulator / Devices / F90BBF76-C3F8-4040-9C1E-448FAE38FA5E / data / Containers / Data / Application / 3F3F6E12-EDD4-4C46-BFC3-58EB64D4BCCB / Library / Caches
źródło
Jeśli chcesz wejść do folderów aplikacji, aby zobaczyć, co się dzieje i nie chcesz przechodzić przez labiryntowe identyfikatory UUDID, zrobiłem to: https://github.com/kallewoof/plget
i używając go, zrobiłem to: https://gist.github.com/kallewoof/de4899aabde564f62687
Zasadniczo, gdy chcę przejść do folderu jakiejś aplikacji, robię:
$ 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
W
./app.sh
części synchronizacje linki. Jest to konieczne w zasadzie zawsze w dzisiejszych czasach, ponieważ aplikacje zmieniają UUID dla każdego uruchomienia w Xcode od 6.0. Ponadto aplikacje są niestety według identyfikatora pakietu dla 8.x i według nazwy aplikacji dla <8.źródło
Na podstawie odpowiedzi Ankur, ale dla nas użytkowników Swift:
let urls = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask) println("Possible sqlite file: \(urls)")
Umieść go w ViewDidLoad, a zostanie wydrukowany natychmiast po uruchomieniu aplikacji.
źródło
Symulatory znajdują się pod:
~/Library/Developer/CoreSimulator/
Tutaj są wymienione jako katalogi z nazwami UUID. Użyj opcji sortowania według „Daty modyfikacji”, aby znaleźć najnowszą. Wewnątrz przejdź do:
/data/Containers/Data/Application/
Tutaj otrzymasz listę wszystkich aplikacji na tym urządzeniu. Możesz ponownie posortować to, aby pobrać najnowszą aplikację.
UWAGA: Xcode zmienia nazwę katalogu za każdym razem, gdy uruchamiasz aplikację, więc nie polegaj na tworzeniu aliasów / skrótów na pulpicie.
Najłatwiej jest użyć tutaj aplikacji , która robi wszystko automatycznie.
źródło
Katalog symulatora został przeniesiony wraz z Xcode 6 beta do ...
~/Library/Developer/CoreSimulator
Przeglądanie katalogu do folderu Dokumenty Twojej aplikacji jest nieco bardziej uciążliwe, np.
~/Library/Developer/CoreSimulator/Devices/4D2D127A-7103-41B2-872B-2DB891B978A2/data/Containers/Data/Application/0323215C-2B91-47F7-BE81-EB24B4DA7339/Documents/MyApp.sqlite
źródło
Najlepszym sposobem na znalezienie ścieżki jest skorzystanie z kodu.
Używając Swift, po prostu wklej poniższy kod do aplikacji funkcji w pliku AppDelegate.swift
let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true) let documentsPath = paths.first as String println(documentsPath)
W przypadku kodu Obj-C poszukaj odpowiedzi z @Ankur
źródło
Dla Swift 3.x
if let documentsPath = FileManager.default.urls(for:.documentDirectory, in: .userDomainMask).first?.path { print("Documents Directory: " + documentsPath) }
źródło
iOS 11
if let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first { debugPrint("documentsPath = \(documentsPath)") }
źródło