2

我通过 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还必须显示应用程序文档目录的所有文件夹,并且我使用一个NSObject名为 Folder Item 的自定义项,它存储表的所有项目路径、名称和缩进级别。如果我使用这种方法,我无法获得路径,因为所有 lFolders 都在 Dropbox 助手类中,我可以将其移动到 .viewcontroller但令我困惑的是获得objectAtIndex. 如果我让它只添加对象,它将显示所有第一级文件夹,然后是第二级,然后是第三级。我想要它,所以如果在 Dropbox 中有一个名为“test 1”的文件夹,然后 test 1 包含“test 2”,那么它会显示 test 1,然后缩进更多 test 2 文件夹,然后是其他第一个目录文件夹。如果我在数组中使用我的 FolderItem 我找不到objectAtIndex. 我怎样才能获得我需要插入的文件夹的索引呢?

4

1 回答 1

2

您遇到的问题是您正在构建一个简单的文件名列表。你需要建立一个树形结构。一种方法是创建一个字典数组。数组中的每个元素都是一个字典。字典包含文件名及其子目录的数组。

在调用该restClient:loadedMetadata:方法时,您需要查看元数据以确定父目录。使用它在树结构中找到正确的位置,以便您可以在树中的正确节点处填写子目录数组。

于 2012-11-10T03:01:40.587 回答