NSSearchPathForDirectoriesInDomains解释混乱

use*_*426 1 c iphone xcode file

我刚学习这段代码,检查文件是否存在:

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

但我有点困惑.按以下行:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
Run Code Online (Sandbox Code Playgroud)

确定我理解方法NSSearchPathForDirectoriesInDomains根据您传递给此方法的参数返回路径.但是这个用户(编写代码的人)盲目地传递了全班!(参考NSDocumentDirectory,NSUserDOmainMask).他唯一正确传递的是BOOL YES.我检查了苹果文档,它说:

NSSearchPathForDirectoriesInDomains创建目录搜索路径列表.

NSArray * NSSearchPathForDirectoriesInDomains (
NSSearchPathDirectory directory,
NSSearchPathDomainMask domainMask,
BOOL expandTilde
);
Run Code Online (Sandbox Code Playgroud)

我在苹果文档中搜索了NSSearchPathDirectory和NSSearchPathDomainMask,他们建议我必须传递一个数字

这表明需要将一个数字传递给方法?有人可以解释一下这条线吗?谢谢

Mar*_*era 11

阅读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;
Run Code Online (Sandbox Code Playgroud)

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;
Run Code Online (Sandbox Code Playgroud)