Путь к каталогу документов iOS 8 Beta Simulator


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

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

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

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

21 81

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.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/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).

screen 1

screen 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":

Run Shell Script inside Automator Application

обновление: 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/Devices/

тренажеры расположены под:

~/Library/Developer/CoreSimulator/

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

/data/Containers/Data/Application/

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

Примечание: Xcode изменяет имя каталога каждый раз, когда вы запускаете приложение, поэтому не полагайтесь на создание псевдоним / короткие пути на рабочем столе.

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

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

  1. убедитесь, что в CoreData хранится только относительный путь к документу / файлу. Например, хранить " файлы / изображения.jpg "вместо" / Users/yourname/.../Программы/Русский/документа/файлов/изображений.формат JPG."
  2. для извлечения используйте следующее расположение документа приложения:

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

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

где находится каталог документов для 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

Для 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)")
}