Каталог документов Путь к бета-симулятору iOS 8

В iOS 7 каталог документов iOS-симуляторов можно найти в:

/Users/Sabo/Library/Application Support/iPhone Simulator/ 

Однако в iOS 8 Beta Simulator я не могу найти соответствующий каталог для iOS 8 в приведенной выше директории.

Где путь каталога документа для симулятора iOS 8?

введите описание изображения здесь

на моем компьютере путь:

 ~/Library/Developer/CoreSimulator/Devices/1A8DF360-B0A6-4815-95F3-68A6AB0BCC78/data/Container/Data/Application/ 

ПРИМЕЧАНИЕ. Вероятно, эти длинные идентификаторы (т.е. UDID) различаются на вашем компьютере.

NSLog под кодом где-нибудь в «AppDelegate», запустите свой проект и следуйте по пути. Это будет легко для вас добраться до документов, а не искать случайным образом внутри «~ / Library / Developer / CoreSimulator / Devices /»

Objective-C

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

стриж
Если вы используете Swift 1.2, используйте приведенный ниже код, который будет выводиться только в процессе разработки при использовании Simulator из-за блока #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 », а затем « Go to Folder » или команду + shift + g и вставьте свой путь, пусть Mac возьмет вы в свой каталог документов 🙂

Просто напишите следующий код в 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 

Вывод
/ Users / mitul_marsonia / Library / Developer / CoreSimulator / Devices / E701C1E9-FCED-4428-A36F-17B32D32918A / данные / Контейнеры / Data / Application / 25174F64-7130-4B91-BC41-AC74257CCC6E / Документы

Скопируйте путь из «/ Users / mitul_marsonia / Library / Developer / CoreSimulator / Devices / E701C1E9-FCED-4428-A36F-17B32D32918A …» перейдите в «Finder», а затем «Go to Folder» или команду + 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).

экран 1

экран 2

Теперь, после определения вашего симулятора, в зависимости от его версии структура папок очень различна:

На iOS 8 исполняемый файл и папка с данными приложения находятся в разных папках:

Исполняемый ~/Library/Developer/CoreSimulator/Devices/[simID]/data/Containers/Bundle/Application/[appID] : ~/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

На iOS 7 и ниже структура папок такая же, как и раньше, только помните, что теперь каждый симулятор находится в одной папке (см. Выше).

Если ваше приложение использует CoreData, отличным трюком является поиск имени файла sqlite с помощью терминала.

 find ~ -name my_app_db_name.sqlite 

Результаты перечислит полные пути к файлам для любых симуляторов, которые запустили ваше приложение.

Я действительно хочу, чтобы Apple просто добавила кнопку в меню файла iOS Simulator, например «Reveal Documents folder in Finder».

Верно, что нам нужно заглянуть в путь ~ / Library / Developer / CoreSimulator / Devices /.

Но проблема, которую я вижу, заключается в том, что путь постоянно меняется при каждом запуске приложения. Путь содержит еще один набор длинных идентификаторов после строки Application и постоянно меняется при каждом запуске приложения. Это в основном означает, что мое приложение не будет иметь кэшированных данных, когда он будет работать в следующий раз.

С принятием CoreSimulator в Xcode 6.0 каталоги данных предназначены для каждого устройства, а не для каждой версии. Каталог данных – это файлы ~ / Library / Developer / CoreSimulator / Devices //, которые могут быть определены из «списка xcrun simctl»,

Обратите внимание, что вы можете безопасно удалять ~ / 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»:

Запустить сценарий оболочки внутри приложения Automator

обновление: 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 /…/ documents» и нажмите go.

Попробуйте ~/Library/Developer/CoreSimulator/Devices/

Симуляторы расположены под:

~/Library/Developer/CoreSimulator/

Здесь они перечислены как каталоги с именами UUID. Используйте сортировку по «Дата изменения», чтобы найти последнюю. Внутри перейти к:

/data/Containers/Data/Application/

Здесь вы получите список всех приложений на этом устройстве. Вы можете снова отсортировать это, чтобы получить последнее приложение.

ПРИМЕЧАНИЕ. Xcode изменяет имя каталога при каждом запуске приложения, поэтому не полагайтесь на создание псевдонима / коротких сокращений на рабочем столе.

Самый простой способ – использовать приложение здесь , которое делает все автоматически.

Я столкнулся с той же проблемой, когда я сохранил полный путь, используя CoreData. При получении полного пути он возвращает null, потому что UUID папки документа различен при каждом перезапуске приложения. Ниже приводится мое решение:

  1. Обязательно сохраняйте только относительный путь документа / файла в CoreData. Например, сохраните «Files / image.jpg» вместо «/Users/yourname/…/Applications/UUID/Document/Files/image.jpg».
  2. Для получения местоположения документа приложения используйте следующее:

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

  • Объедините оба # 2 и # 1, чтобы получить полный путь к документу / файлу, который вы хотите получить.
  • Вы можете обратиться к заметке разработчика Apple: https://developer.apple.com/library/ios/technotes/tn2406/_index.html

    Где находится Справочник документов для iOS 8 Simulator

    Возможно, вы заметили, что iPhone Simulator изменился с Xcode 6, а с ним – конечно – путь к каталогу документов ваших имитируемых приложений. Иногда нам, возможно, нужно взглянуть на него.

    Поиск этого пути не так прост, как когда-то, а именно Library / Application Support / iPhone Simulator / 7.1 / Applications /, за которым следует загадочное число, представляющее ваше приложение.

    Начиная с Xcode 6 и iOS 8 вы найдете его здесь: Библиотека / Разработчик / CoreSimulator / Устройства / cryptic number / data / Containers / Data / Application / cryptic number

    http://pinkstone.co.uk/where-is-the-documents-directory-for-the-ios-8-simulator/

    в Appdelegate, поставьте этот код, чтобы увидеть Document and Cache 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 

    on Log:

    Справочник документов: / Пользователи / xxx / Библиотека / Разработчик / CoreSimulator / Devices / F90BBF76-C3F8-4040-9C1E-448FAE38FA5E / data / Контейнеры / Данные / Приложение / 3F3F6E12-EDD4-4C46-BFC3-58EB64D4BCCB / Документы /

    Cache Directory: / Пользователи / xxx / Библиотека / Разработчик / CoreSimulator / Devices / F90BBF76-C3F8-4040-9C1E-448FAE38FA5E / data / Контейнеры / Данные / Приложение / 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 

    Часть ./app.sh синхронизирует ссылки. Это необходимо в основном всегда в наши дни, когда приложения меняют UUID для каждого запуска в Xcode с 6,0. Кроме того, к сожалению, приложения имеют идентификатор bundle для 8.x и имя приложения для <8.

    Основываясь на ответе Анкура, но для нас пользователи Swift:

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

    Поместите его в ViewDidLoad, и он будет распечатываться сразу после выполнения приложения.

    Каталог симуляторов был перемещен с помощью Xcode 6 beta …

      ~/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.swift

     let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true) let documentsPath = paths.first as String println(documentsPath) 

    Для кода Obj-C посмотрите ответ от @Ankur

    Для Swift 3.x

     if let documentsPath = FileManager.default.urls(for:.documentDirectory, in: .userDomainMask).first?.path { print("Documents Directory: " + documentsPath) } 

    iOS 11

     if let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first { debugPrint("documentsPath = \(documentsPath)") } 
  • неожиданное окно nil в _UIApplicationHandleEventFromQueueEvent
  • Как вы разворачиваете опции Swift?
  • Класс размера для iPad-портрета и ландшафтных режимов
  • Не удалось загрузить iOS 8 Simulator
  • Xcode 6 iOS Создание Cocoa Touch Framework - проблемы с архитектурой
  • Как получить консоль устройства в Xcode6?
  • Как мы определяем ориентацию приложения в iOS 8?
  • Xcode 6 позволяет объектам VECTOR image ... любой идеи, как их использовать?
  • NSRange для диапазона
  • Местоположение Услуги, не работающие в iOS 8
  • Iframe прокрутка iOS 8
  • Давайте будем гением компьютера.