NSSearchPathForDirectoriesInDomains объяснение перепутано - PullRequest
1 голос
/ 02 октября 2011

Я только что изучил этот код, который проверяет, существует ли файл:

NSString *path;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
path = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"SomeDirectory"];
path = [path stringByAppendingPathComponent:@"SomeFileName"];
if ([[NSFileManager defaultManager] fileExistsAtPath:path])
{

но я немного запутался. по следующей строке:

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

Хорошо, я понимаю, что метод NSSearchPathForDirectoriesInDomains возвращает путь в зависимости от аргументов, которые вы передаете этому методу. Но этот пользователь (тот, кто написал код) вслепую передает целый класс! (ссылаясь на NSDocumentDirectory, NSUserDOmainMask). Единственное, что он передает правильно, это ДУША. Я проверяю документы Apple, и это говорит следующее:

NSSearchPathForDirectoriesInDomains Создает список путей поиска в каталоге.

NSArray * NSSearchPathForDirectoriesInDomains (
NSSearchPathDirectory directory,
NSSearchPathDomainMask domainMask,
BOOL expandTilde
);

У меня есть поиск NSSearchPathDirectory и NSSearchPathDomainMask в документах Apple, и они предлагают мне передать число

Это предполагает, что число должно быть передано в метод? Может кто-нибудь объяснить эту строку, пожалуйста? спасибо

1 Ответ

11 голосов
/ 02 октября 2011

Прочтите документацию констант фреймворка Foundation здесь:
http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Miscellaneous/Foundation_DataTypes/Reference/reference.html#//apple_ref/doc/c_ref/NSDocumentDirectory

Это правильное использование, потому что это не классы, а константы!


NSSearchPathDomainMask

Константы домена пути поиска, указывающие базовые расположения для типа NSSearchPathDirectory.

enum {
   NSUserDomainMask = 1, //this one
   NSLocalDomainMask = 2,
   NSNetworkDomainMask = 4,
   NSSystemDomainMask = 8,
   NSAllDomainsMask = 0x0ffff,
};
typedef NSUInteger NSSearchPathDomainMask;

NSSearchPathDirectory

Эти константы указывают расположение различных каталогов.

enum {
   NSApplicationDirectory = 1,
   NSDemoApplicationDirectory,
   NSDeveloperApplicationDirectory,
   NSAdminApplicationDirectory,
   NSLibraryDirectory,
   NSDeveloperDirectory,
   NSUserDirectory,
   NSDocumentationDirectory,
   NSDocumentDirectory,  // this one
   NSCoreServiceDirectory,
   NSAutosavedInformationDirectory = 11,
   NSDesktopDirectory = 12,
   NSCachesDirectory = 13,
   NSApplicationSupportDirectory = 14,
   NSDownloadsDirectory = 15,
   NSInputMethodsDirectory = 16,
   NSMoviesDirectory = 17,
   NSMusicDirectory = 18,
   NSPicturesDirectory = 19,
   NSPrinterDescriptionDirectory = 20,
   NSSharedPublicDirectory = 21,
   NSPreferencePanesDirectory = 22,
   NSItemReplacementDirectory = 99,
   NSAllApplicationsDirectory = 100,
   NSAllLibrariesDirectory = 101
};
typedef NSUInteger NSSearchPathDirectory;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...