【问题标题】:NSSearchPathForDirectoriesInDomains explanation confusedNSSearchPathForDirectoriesInDomains 解释混乱
【发布时间】:2011-11-29 10:36:51
【问题描述】:

我刚刚研究了这段检查文件是否存在的代码:

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)。他唯一正确通过的是 BOOL YES。我检查了苹果文档,上面写着:

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

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

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

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

【问题讨论】:

    标签: iphone c xcode file


    【解决方案1】:

    在此处阅读 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;
    

    【讨论】:

      猜你喜欢
      • 2010-11-08
      • 1970-01-01
      • 2011-12-27
      • 2015-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多