我在我的应用中添加了“移动到文件夹”功能,并支持Dropbox。我试图获取整个用户Dropbox中的所有文件夹和子文件夹。下面是我现在拥有的代码,如果记录,则具有正确的顺序但是向后
-(void)restClient:(DBRestClient *)client loadedMetadata:(DBMetadata *)metadata {
if (allFolders == nil) {
allFolders = [[NSMutableArray alloc] init];
[allFolders addObject:@"/"];
}
for (DBMetadata *fileMetadata in metadata.contents) {
if ([fileMetadata isDirectory]) {
NSArray *filePathComponents = [fileMetadata.path pathComponents];
NSString *inFolder = [filePathComponents objectAtIndex:[filePathComponents count]-2];
NSLog(@"file is in folder %@",inFolder);
[allFolders insertObject:fileMetadata.filename atIndex:[allFolders indexOfObject:inFolder]];
if ([metadata.contents count] > 0) [[self restClient] loadMetadata:fileMetadata.path];
}
}
}
这个问题是我的hViewFoldersViewController
还必须显示应用程序的文档目录的所有文件夹,并且我使用名为Folder Item的自定义NSObject
来存储所有项目路径,名称和表的缩进级别。如果我使用这种方法,我无法获得路径,因为al lFolders在dropbox助手类中,我可以将其移动到viewcontroller
,但令我困惑的是获得objectAtIndex
。如果我让它只是添加对象,它将显示所有第一级文件夹,然后是第二级,然后是第三级。我想要它,所以如果在Dropbox中你有一个名为“test 1”的文件夹,然后test 1包含“test 2”,那么它显示测试1,然后更多缩进test 2文件夹,然后是其他第一个目录文件夹。如果我在数组中使用我的FolderItem,我找不到objectAtIndex
。如何获取我需要插入的文件夹的索引呢?
答案 0 :(得分:2)
您遇到的问题是您正在构建一个简单的文件名列表。您需要构建树结构。一种方法是创建一个字典数组。数组中的每个元素都是字典。该字典包含文件名及其子目录的数组。
在调用restClient:loadedMetadata:
方法时,您需要查看元数据以确定父目录。使用此选项可在树结构中找到正确的位置,以便可以在树中的适当节点处填充子目录数组。