2011-08-05 59 views
0

我正在尋找一種方法來填充NSArray與NSStrings是應用程序文檔目錄中的目錄的名稱。如何用目錄名填充NSArray?

這是我到目前爲止有:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 

    for (//loop until no more directories) 
    { 
     NSString *newDir = [documentsDirectory stringByAppendingPathComponent:path]; 

     //Code for retrieving directory names 
     [directoriesArray addObject:newDir]; 
    } 

我不知道什麼for循環的條件必須是,我不知道如何檢索的目錄名。

感謝您的建議提前。

回答

1

試試這個

NSFileManager *fileManager = [NSFileManager defaultManager]; 
filesArray = [[fileManager contentsOfDirectoryAtPath:urDocumentsFolderPath error:nil] retain]; 

for(NSString *file in filesArray) { 
//Do something 
} 

所以你的情況

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSFileManager *fileManager = [NSFileManager defaultManager]; 
filesArray = [[fileManager contentsOfDirectoryAtPath:documentsDirectory error:nil] retain]; 
for(NSString *file in filesArray) 
{ 
    NSString *newDir = [documentsDirectory stringByAppendingPathComponent:file]; 
    //Code for retrieving directory names 
    [directoriesArray addObject:newDir]; 
} 

希望這有助於

+1

它的工作原理,非常感謝很多人!但順便說一下,directoryContentsAtPath已折舊。我用contentsOfDirectoryAtPath:錯誤:代替。 – BlueMeanie

+0

哦,是的,我忘了。將更新我的答案。謝謝... – visakh7

0

「的應用程序文件目錄」=〜/用戶/用戶/應用程序? NSDocumentsDirectory或NSApplicationDirectory?

可能:

NSFileManager *fileManager = [NSFileManager defaultManager]; 
BOOL fileIsDirectory = FALSE; 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSApplicationDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSArray *content = [fileManager contentsOfDirectoryAtPath:documentsDirectory error:NULL]; //OSX v10.5 
NSEnumerator *enumeratorContent = [content objectEnumerator]; 
NSString *file; 

while ((file = [emumeratorContent nextObject])) { 
    NSAutoreleasePool *pool = [NSAutoreleasePool new]; 
    if (fileManager fileExistAtPath:[documentsDirectory stringByAppendingPathComponent:file] isDirectory:&fileIsDirectory && fileIsDirectory) 
     [directoriesArray addObject:file]; 
    [pool drain]; 

嘗試使用NSDirectoryEnumerator(OSX v.10.0)或NSURL太(OSX v.10.6)。