it-swarm.com.ru

Какой лучший способ найти каталог документов пользователя на iPhone?

Я читаю книгу Эрика Садуна iPhone Developer Cookbook и столкнулась с вопросом.

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

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

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

NSSearchPathForDirectoriesInDomains(NSDocumentsDirectory, NSUserDomainMask, YES);

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

59
bwinton

ObjC:

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

Swift:

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

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

91
Ben Gottlieb

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

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
49
Lee

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

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

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

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

14
Zelko

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

NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *zipLocalPath = [documentPath stringByAppendingString:fileName];
0
Nguyễn Văn Chung

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

var paths = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.userDomainMask, true)
0
Suresh Velusamy