NSFileManager enumeratorAtURL在XCode 6 / iOS 8上无法正常工作

时间:2014-07-07 20:25:14

标签: ios8 xcode6

我在小牛队。

我正在使用模拟器。

基于NSFileManager URL的方法似乎无法在XCode 6 / iOS 8上正常工作。

在我底部的代码示例中,'directoryToScan'中搜索的路径是...... /用户/ XXXX /库/开发商/ CoreSimulator /设备/ A092C58C-1A43-4AF3-A9B1-109D7BA27F8D /数据/容器/数据/应用/ 41232C14-CF90-4E5C-72A7-8FF464FE7C32 /文件

在底部的代码中,即使我在我提供的路径中有文件,当我的代码到达“for in”枚举器时,它会跳过“for in”块到它的末尾,并且继续在下一行,我从errorHandler中的块获取NO ERROR消息。 我也尝试了一段时间,并且也做了同样的事情。

另外,我尝试了另外两种技术......

// THIS DOES NOT WORK
NSArray *dirContents = [[NSFileManager defaultManager] contentsOfDirectoryAtURL:directoryToScan includingPropertiesForKeys:nil options:NSDirectoryEnumerationSkipsHiddenFiles error:&theError];

// THIS DOES WORK            
NSArray *dirContents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentDirectory error:&theError];

所以看来iOS 8中的NSURL存在问题。

知道发生了什么事吗?我想如果有权限问题,我会在处理程序中看到错误。

NSURL *directoryToScan = [NSURL fileURLWithPath:documentDirectory];

NSDirectoryEnumerator *dirEnumerator = [[NSFileManager defaultManager] enumeratorAtURL:directoryToScan
                                                                    includingPropertiesForKeys:[NSArray arrayWithObjects:NSURLIsDirectoryKey, nil]
                                                                                       options:NSDirectoryEnumerationSkipsHiddenFiles | NSDirectoryEnumerationSkipsSubdirectoryDescendants | NSDirectoryEnumerationSkipsPackageDescendants
                                                                                  errorHandler:^(NSURL *url, NSError *error){
                                                                                      NSLog(@"Error occurred at url %@",url);
                                                                                      NSLog(@"Error message is %@",error);
                                                                                      return YES;}];

for (NSURL *theURL in dirEnumerator)
{
  // Work with the files found by dirEnumerator.
  // This whole block is being skipped over.
}

1 个答案:

答案 0 :(得分:0)

如果您仍然对调查此问题感兴趣,请提供设置directoryToScandocumentDirectory的代码吗?您是否尝试在调试期间打印两个值以确保它们都在同一目录中?在Xcode 6.1中? 在Xcode 6.1中,for (NSURL *theURL in dirEnumerator)for (NSURL* theURL = [dirEnumerator nextObject])都可以正常使用。