我在小牛队。
我正在使用模拟器。
基于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.
}
答案 0 :(得分:0)
如果您仍然对调查此问题感兴趣,请提供设置directoryToScan
和documentDirectory
的代码吗?您是否尝试在调试期间打印两个值以确保它们都在同一目录中?在Xcode 6.1中?
在Xcode 6.1中,for (NSURL *theURL in dirEnumerator)
和for (NSURL* theURL = [dirEnumerator nextObject])
都可以正常使用。