Может ли кто-нибудь объяснить мне, какой каталог документов находится в приложении iOS и когда его использовать?
Вот во что я верю сейчас:
Мне кажется, что это центральная папка, в которой пользователь может хранить любые файлы, необходимые для приложения.
Это было бы другое место, чем то, где Core Data хранит свои данные?
Кажется, что каждое приложение получает свой собственный каталог документов.
Я могу создать подкаталог каталога документов, например каталог / изображения документов или каталог / видео документов?
ios
nsdocumentdirectory
user798719
источник
источник
Ответы:
Только ваше приложение (на устройстве без джейлбрейка) работает в «изолированной» среде. Это означает, что он может получить доступ только к файлам и каталогам внутри своего собственного содержимого. Например, документы и библиотека .
См. Руководство по программированию приложений iOS. .
Для доступа к документам каталогу в изолированной программной среде вашего приложения, вы можете использовать следующее:
iOS 8 и новее, это рекомендуемый метод.
если вам нужна поддержка iOS 7 или более ранней версии
Эти документы каталог позволяет хранить файлы и подкаталоги, которые ваше приложение создает или может понадобиться.
Чтобы получить доступ к файлам в каталоге библиотеки вашего приложения, используйте песочницу (вместо
paths
указанной выше):источник
NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
всегда предоставит вам правильный каталог!Это изменилось в iOS 8. См. Следующее техническое примечание: https://developer.apple.com/library/ios/technotes/tn2406/_index.html
Санкционированный Apple способ (по ссылке выше) выглядит следующим образом:
источник
Мне не удалось найти код в документе, предложенном в принятом ответе, но я нашел здесь обновленный эквивалент:
Руководство по программированию файловой системы :: Доступ к файлам и каталогам »
Это препятствует использованию NSSearchPathForDirectoriesInDomain:
Вот еще несколько полезных констант каталогов, с которыми можно поиграть. Несомненно, не все из них поддерживаются в iOS. Также вы можете использовать функцию NSHomeDirectory (), которая:
Из NSPathUtilities.h
И, наконец, некоторые удобные методы в категории NSURL http://club15cc.com/code/ios/easy-ios-file-directory-paths-with-this-handy-nsurl-category
источник
Swift 3 и 4 как глобальная переменная:
Как расширение FileManager:
источник
documentDirectoryURL
или простоdocumentDirectory
и положиться на тип. Мне нравится идея статического определения области видимости до статическогоFileManager
свойства в расширении.Помимо
Documents
папки iOS также позволяет сохранять файлы в папкиtemp
иLibrary
папки.Для получения дополнительной информации о том, какой из них использовать, перейдите по этой ссылке в документации:
источник
Может быть проще добавить расширение в FileManager для такого неудобного вызова, если не чего больше. Что-то вроде:
источник
Вы можете получить доступ к каталогу документов, используя этот код, он в основном используется для хранения файла в формате plist:
источник
Вот небольшая полезная функция, которая немного упрощает использование / создание папок iOS.
Вы передаете ему имя подпапки, он вернет вам полный путь и убедитесь, что каталог существует.
(Лично я использую эту статическую функцию в своем классе AppDelete, но, возможно, это не лучшее место для ее размещения.)
Вот как вы бы назвали это, чтобы получить «полный путь» к подкаталогу MySavedImages:
А вот и полная функция:
Используя эту небольшую функцию, легко создать каталог в каталоге Documents вашего приложения (если он еще не существует) и записать в него файл.
Вот как бы я создал каталог и записал в него содержимое одного из моих файлов изображений:
Надеюсь это поможет !
источник
Как уже упоминалось, ваше приложение работает в изолированной среде, и вы можете использовать каталог документов для хранения изображений или других ресурсов, которые может использовать ваше приложение, например. загрузка файлов offline-d по желанию пользователя - Основы файловой системы - Документация Apple - Какой каталог использовать для хранения файлов, специфичных для приложения
После обновления до Swift 5 вы можете использовать одну из этих функций в соответствии с требованиями -
Использование:
источник