Objective c -enumaeratorAtPath:不在根级文件夹中工作

Posted

技术标签:

【中文标题】Objective c -enumaeratorAtPath:不在根级文件夹中工作【英文标题】:Objective c -enumaeratorAtPath: Not Working at root level folders 【发布时间】:2015-05-21 06:16:33 【问题描述】:

我正在尝试枚举根级别的文件和文件夹

 (/Users/Myname/Desktop or /Users/Myname/Documents),[enumarator nextobject] always gives nil value.

我该如何解决这个问题。

NSDirectoryEnumerator* enumerator = [[NSFileManager defaultManager] enumeratorAtPath:@"/Users/Myname/Desktop"];

NSString *content=  [enumerator nextObject];//content always nil.

【问题讨论】:

@AminNegm-code 添加。 您不应将文档路径作为文字输入,而应使用NSSearchPathForDirectoriesInDomains() 感谢您的回复@AminNegm-Awad。我都试过了,但都不起作用,我怀疑是沙盒造成了这个问题。 是的,沙盒造成了这个问题。 【参考方案1】:

试试这个:

 NSFileManager *fileManager = [NSFileManager defaultManager];
 NSDirectoryEnumerator * emuerator = [fileManager enumeratorAtPath:@"/usr/Myname/Desktop"]; 
 NSString *filename; while ((filename = [emuerator 
 nextObject])) 
   
    NSLog (@"file!  %@", filename); 
   

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSFileManager *manager = [[NSFileManager alloc] init];
NSDirectoryEnumerator *emuerator= [manager enumeratorAtPath: @"/usr/Myname/Desktop"];


for (NSString *filename in emuerator) 
    // Do something with file


[manager release];

【讨论】:

以上是关于Objective c -enumaeratorAtPath:不在根级文件夹中工作的主要内容,如果未能解决你的问题,请参考以下文章

objective-c入门

Objective-C和C的区别

objective-c与C++的区别

在 Mac OS X 上结合 Objective-C 和 C/C++

Objective-C 和 MetroWerks C/C++ IDE

objective-c和Cpp怎么混合编程?