Какой лучший способ найти каталог документов пользователя на iPhone? - PullRequest
60 голосов
/ 07 ноября 2008

Я читаю книгу Эрика Садуна для разработчиков iPhone и столкнулся с вопросом.

Она говорит в книге, что способ найти каталог документов пользователя с помощью кода:

[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];

но это кажется слегка ломким и не похожим на обычный способ Mac, который будет:

NSSearchPathForDirectoriesInDomains(NSDocumentsDirectory, NSUserDomainMask, YES);

Есть ли какие-либо конкретные причины использовать один над другим?

Ответы [ 5 ]

92 голосов
/ 07 ноября 2008

ObjC:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)

Swift:

var paths = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)

Вам понадобится первый элемент возвращаемого массива.

49 голосов
/ 07 декабря 2008

Вот код, который я использую в моей структуре.

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
14 голосов
/ 12 октября 2012

Вам следует рассмотреть возможность использования методов NSFileManager, которые возвращают URL-адреса, которые являются предпочтительным форматом.

let documentsURL = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0] as NSURL

Этот метод предназначен для поиска известных и общих каталогов в системе.

Массив объектов NSURL, идентифицирующих запрошенные каталоги. Каталоги упорядочены в соответствии с порядком констант маски домена, в первую очередь элементы в пользовательском домене и последние в системном домене.

0 голосов
/ 09 сентября 2017

В Swift v3 я использовал следующий фрагмент

var paths = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.userDomainMask, true)
0 голосов
/ 17 января 2015

Я использую это

NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *zipLocalPath = [documentPath stringByAppendingString:fileName];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...