0

我不知道如何访问includingPropertiesForKeys:我在 NSFileManager 方法中提到的属性(我的意思是我们在此方法中作为 NSArray 询问的文件属性):

-(NSArray *)contentsOfDirectoryAtURL:<#(NSURL *)#> 
          includingPropertiesForKeys:<#(NSArray *)#> 
                             options:<#(NSDirectoryEnumerationOptions)#> 
                               error:<#(NSError *__autoreleasing *)#>

我得到一个 NSArray 对象,其中包含一个文件的 NSURL 对象数组。

所以,我不能只得到这个属性(我只是不知道如何)。

我必须使用此构造来获取该属性:

NSArray *arrayOfNSURLs = [[NSFileManager defaultManager] contentsOfDirectoryAtURL:myFolderURL
                              includingPropertiesForKeys:@[NSURLContentModificationDateKey, NSURLVolumeIdentifierKey, NSURLLocalizedNameKey,NSURLLocalizedTypeDescriptionKey]
                                                 options:NSDirectoryEnumerationSkipsHiddenFiles
                                                   error:nil];

// I will call all below this 'second part'

id test;
for (id file in arrayOfNSURLs) {
    if ([file isKindOfClass:[NSURL class]]) {
        [file getResourceValue:&test forKey:NSURLContentModificationDateKey error:nil];

        NSLog(@"%@ %@",file ,test);

    }

}

如您所见,我必须使用 NSURL 方法getResourceValue:forKey:error:。但是等一下,对于我在NSFileManager方法contentsOfDirectoryAtURL:includingPropertiesForKeys:options:error:中提到这个键的includingPropertiesForKeys:部分原因???

我尝试将nil其作为...includingPropertiesForKeys:部分参数,添加键数组和 nil 之间没有区别,“第二部分”无论如何都会为您提供内容修改键。

所以,我的问题很简单:为什么方法中的键参数需要属性contentsOfDirectoryAtURL:includingPropertiesForKeys:options:error:?有没有办法在我的代码中没有第二部分的情况下检索此键中提到的信息?

谢谢。

4

1 回答 1

1

contentsOfDirectoryAtURL:includingPropertiesForKeys:options:error: 中键的目的是,根据文档:“键数组告诉枚举器对象预取和缓存每个项目的信息。预取此信息通过仅触摸磁盘一次来提高效率” .

您仍然必须使用 getResourceValue:forKey:error: 来获取这些值,但是这些值现在存储在 NSURL 对象本身中,因此您无需再次访问磁盘来获取它们。

于 2013-08-12T00:49:45.573 回答