Путь к каталогу документов iOS 8 Beta Simulator
в iOS 7 каталог документов симуляторов iOS можно найти в:
/Users/Sabo/Library/Application Support/iPhone Simulator/
однако, в iOS 8 Beta Simulator, Я не могу найти соответствующий каталог для iOS 8 в вышеуказанном каталоге.
где находится путь к каталогу документов для симулятора iOS 8?
21 ответ:
на моем компьютере, путь:
~/Library/Developer/CoreSimulator/Devices/1A8DF360-B0A6-4815-95F3-68A6AB0BCC78/data/Container/Data/Application/
Примечание: вероятно, эти длинные идентификаторы (т. е. UDIDs) отличаются на вашем компьютере.
NSLog
ниже кода где-то в" AppDelegate", Запустите свой проект и следуйте по пути. Это будет легко для вас, чтобы добраться до документов, а не искать случайным образом внутри " ~ / библиотека / разработчик / CoreSimulator / устройства/"С
NSLog(@"%@",[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]);
Свифт
Если вы используете Swift 1.2, используйте приведенный ниже код, который будет выводиться только в разработке при использовании симулятора из-за#if
#endif
блок:#if arch(i386) || arch(x86_64) let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as! NSString NSLog("Document Path: %@", documentsPath) #endif
скопируйте свой путь из " / Users/ankur/Library/Developer/CoreSimulator/Devices / 7BA821..."иди к"Finder" и "перейдите в папку" или команда + shift + g и вставьте свой путь, пусть mac приведет вас в каталог документов:)
просто написать ниже код в AppDelegate ->didFinishLaunchingWithOptions
С#if TARGET_IPHONE_SIMULATOR // where are you? NSLog(@"Documents Directory: %@", [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]); #endif
Swift 2.Xif 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
выход
/Users/mitul_marsonia/Library/Developer/CoreSimulator/Devices/E701C1E9-FCED-4428-A36F-17B32D32918A/data/Containers/Data/Application/25174F64-7130-4B91-BC41-AC74257CCC6E/Documentsскопируйте свой путь из "/пользователи/mitul_marsonia/библиотеки/разработчик/CoreSimulator/устройств/E701C1E9-в составе оборудования-4428-A36F-17B32D32918A..."зайдите в" Искатель " и тогда "перейти в папку" или команда + shift + g и вставить путь, пусть mac отвезет вас в каталог документов
Я рекомендую хорошее приложение под названием SimPholders, которое позволяет легко находить файлы и папки при разработке вашего приложения iOS. Он имеет новую версию для работы с новыми симуляторами под названием SimPholders2. Его можно найти по адресу simpholders.com
несмотря на то, что здесь много ответов, ни один из них не дает понимания того, как изменилась структура папок симуляторов iOS 8.3 и не обеспечивает быстрый способ найти данные приложения (папку документов).
поскольку iOS 8 папки хранения данных приложения отделены от исполняемых файлов приложения, а iOS 7 и ниже имеют одинаковую структуру папок, единственное отличие заключается в том, что все симуляторы (разные типы и версии) теперь находятся в одной большой папке.
Итак, путь к симулятору iOS 8,7,6 выглядит следующим образом:
~/Library/Developer/CoreSimulator/Devices
каждый симулятор теперь содержится в папке с именем с уникальным идентификатором, который изменяется при каждом сбросе симулятора.
вы можете найти
Identifier
для каждого из ваших устройств и тренажеров, перейдя кXcode > Window > Devices
(первые 3 или 4 символа идентификатора более чем достаточно для запоминания)., чтобы найти тот, на котором у вас есть установите свое приложение(ы), взгляните на свой
Run scheme > devices
(экран 2).теперь, после идентификации Вашего симулятора, в зависимости от его версии структура папок очень отличается:
на iOS 8 исполняемый файл и папку данных приложения находятся в разных папках:
исполняемый файл:
~/Library/Developer/CoreSimulator/Devices/[simID]/data/Containers/Bundle/Application/[appID]
сведения Папка:
~/Library/Developer/CoreSimulator/Devices/[simID]/data/Containers/Data/Application/[appID]/
Папка С Документами:
~/Library/Developer/CoreSimulator/Devices/[simID]/data/Containers/Data/Application/[appID]/Documents
On iOS 7 и ниже структура папок такая же как и раньше только помните, что теперь каждый тренажер находится в той же папке (см. выше).
Если ваше приложение использует CoreData, отличный трюк заключается в поиске имени файла sqlite с помощью терминала.
find ~ -name my_app_db_name.sqlite
в результатах будут перечислены полные пути к файлам для любых симуляторов, которые запустили ваше приложение.
Я действительно хочу, чтобы Apple просто добавила кнопку в меню файла симулятора iOS, например "показать папку документов в Finder".
правильно, что нам нужно заглянуть в путь ~ / Library/Developer/CoreSimulator/Devices/.
но проблема, которую я вижу, заключается в том, что путь продолжает меняться каждый раз, когда я запускаю приложение. Путь содержит еще один набор длинных идентификаторов после строки приложения, и это продолжает меняться каждый раз, когда я запускаю приложение. Это в основном означает, что мое приложение не будет иметь никаких кэшированных данных при запуске в следующий раз.
с принятием CoreSimulator в Xcode 6.0, каталоги данных для каждого устройства, а не для каждой версии. Каталог данных ~ / Library / Developer/CoreSimulator/Devices/ / data, где можно определить из 'xcrun simctl list'
обратите внимание, что вы можете безопасно удалить ~/Library/Application Support/iPhone Simulator и ~/Library/Logs/iOS Simulator, если вы не планируете возвращаться к Xcode 5.x или раньше.
с iOS 9.2 и Xcode 7.2, следующий скрипт откроет папку документов последнего установленного приложения на последнем используемом симуляторе;
cd ~/Library/Developer/CoreSimulator/Devices/ cd `ls -t | head -n 1`/data/Containers/Data/Application cd `ls -t | head -n 1`/Documents open .
чтобы создать простой запускаемый скрипт, поместите его в приложение Automator с помощью "Run Shell Script":
обновление: 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 }
перейдите в свой Finder нажмите command-shift-g (или Go > Go To Folder... в строке меню) и вставьте этот полный путь "var / folder/.../ документы " там и нажмите go.
тренажеры расположены под:
~/Library/Developer/CoreSimulator/
здесь они перечислены как каталоги с именами UUID. Используйте сортировку по дате изменения, чтобы найти последнюю. Внутри перейдите к:
вы получите список всех приложений на вашем устройстве. Вы можете снова отсортировать это, чтобы получить последнее приложение.
/data/Containers/Data/Application/
Примечание: Xcode изменяет имя каталога каждый раз, когда вы запускаете приложение, поэтому не полагайтесь на создание псевдоним / короткие пути на рабочем столе.
самый простой способ-использовать приложение здесь, который делает все автоматически.
Я столкнулся с той же проблемой, когда я сохранил полный путь с помощью CoreData. При получении полного пути он возвращает null, потому что папка документа UUID отличается каждый раз, когда приложение перезапускается. Вот мое решение:
Вы можете обратиться к Apple Developer Note: https://developer.apple.com/library/ios/technotes/tn2406/_index.html
- убедитесь, что в CoreData хранится только относительный путь к документу / файлу. Например, хранить " файлы / изображения.jpg "вместо" / Users/yourname/.../Программы/Русский/документа/файлов/изображений.формат JPG."
- для извлечения используйте следующее расположение документа приложения:
[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
- объедините #2 и #1, чтобы получить полный путь к документу / файлу, который вы хотите получить.
где находится каталог документов для iOS 8 Simulator
возможно, вы заметили, что симулятор iPhone изменился с Xcode 6, а с ним – конечно же – путь к каталогу документов ваших смоделированных приложений. Иногда нам может понадобиться взглянуть на него.
найти этот путь не так просто, как это было когда-то, а именно библиотека/поддержка приложений/симулятор iPhone/7.1/приложения/ с последующим загадочным номером, представляющим ваше приложение.
начиная с Xcode 6 и iOS 8 вы найдете здесь: Библиотека / разработчик / Корезимулятор / устройства / загадочный номер/данные/контейнеры/данные/приложение / загадочный номер
http://pinkstone.co.uk/where-is-the-documents-directory-for-the-ios-8-simulator/
в Appdelegate, поместите этот код, чтобы увидеть документ и Кэш Dir:
#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
вход:
Документы Каталога: /Users/xxx/Library/Developer/CoreSimulator/Devices/F90BBF76-C3F8-4040-9C1E-448FAE38FA5E/data/Containers/Data/Application/3F3F6E12-EDD4-4C46-BFC3-58EB64D4BCCB/Documents/
Каталог Кэша: /Users/xxx/Library/Developer/CoreSimulator/Devices/F90BBF76-C3F8-4040-9C1E-448FAE38FA5E/data/Containers/Data/Application/3F3F6E12-EDD4-4C46-BFC3-58EB64D4BCCB/Library/Caches
Если вам нравится заходить в папки приложений, чтобы увидеть, что происходит, и не хотите проходить через лабиринт UUDID, я сделал это:https://github.com/kallewoof/plget
и, используя его, я сделал это: https://gist.github.com/kallewoof/de4899aabde564f62687
в принципе, когда я хочу перейти в папку какого-либо приложения, я делаю:
$ 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
The
./app.sh
часть синхронизирует ссылки. Это необходимо в основном всегда в настоящее время в качестве приложений измените UUID для каждого запуска в Xcode с 6.0. Также, к сожалению, приложения с помощью идентификатора комплекта для 8.x и по имени приложения для
на основе ответа Анкура, но для нас Swift пользователей:
let urls = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask) println("Possible sqlite file: \(urls)")
поместите его в ViewDidLoad, и он будет распечатан сразу же после выполнения приложения.
каталог симулятора был перемещен с помощью бета-версии Xcode 6...
~/Library/Developer/CoreSimulator
просмотр каталога в папку документов вашего приложения немного сложнее, например,
~/Library/Developer/CoreSimulator/Devices/4D2D127A-7103-41B2-872B-2DB891B978A2/data/Containers/Data/Application/0323215C-2B91-47F7-BE81-EB24B4DA7339/Documents/MyApp.sqlite
лучший способ найти путь-это сделать с помощью кода.
используя Swift, просто вставьте код ниже внутри функции приложение в своем AppDelegate.Свифт
let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true) let documentsPath = paths.first as String println(documentsPath)
для кода Obj-C, посмотрите ответ от @Ankur