Какой лучший способ найти папку "Документы пользователя" на iPhone?
Я читаю "Поваренную книгу разработчиков iPhone" Эрики Садун и задаюсь вопросом.
Она говорит в книге, что способ найти каталог документов пользователя с кодом:
[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
но это кажется немного хрупким и несовместимым с обычным Mac способом его выполнения:
NSSearchPathForDirectoriesInDomains(NSDocumentsDirectory, NSUserDomainMask, YES);
Есть ли какие-то особые причины для использования одного над другим?
Ответы
Ответ 1
ObjC:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)
Swift:
var paths = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)
Вам понадобится первый элемент возвращаемого массива.
Ответ 2
Вот код, который я использую в своих рамках.
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
Ответ 3
Вам следует рассмотреть методы NSFileManager, которые возвращают URL-адреса, которые являются предпочтительным.
let documentsURL = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0] as NSURL
Этот метод предназначен для поиска известных и общих каталогов в системе.
Массив объектов NSURL, идентифицирующих запрошенные каталоги. Каталоги упорядочены в соответствии с порядком констант маски домена, сначала элементы в домене пользователя и элементы в системном домене.
Ответ 4
Я использую этот
NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *zipLocalPath = [documentPath stringByAppendingString:fileName];
Ответ 5
В swift v3 я использовал следующий фрагмент
var paths = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.userDomainMask, true)