如何从Dropbox APi识别文件或文件夹

时间:2011-07-19 06:33:50

标签: iphone dropbox

您好我正在使用dropbox api并显示来自Dropbox帐户的元数据。

我想区分文件和文件夹与已加载的数据。因为我想显示下一级如果有文件夹,如果有文件我不想显示下一个视图

我加载数据的代码

- (void)restClient:(DBRestClient*)client loadedMetadata:(DBMetadata*)metadata {

    [self.metaArray release];
    self.metaArray = [[NSMutableArray alloc]init ];

    for (DBMetadata *child in metadata.contents) {

        NSString *folderName = [[child.path pathComponents] lastObject];
        [self.metaArray addObject:folderName];



    }



    [self.tableView reloadData];
    [self.activityIndicator stopAnimating];


}

Like this

2 个答案:

答案 0 :(得分:4)

根据Dropbox Developer Docs,元数据包含一个名为is_dir的属性,可以让您确定特定项目是否是目录。

查看DBMetaData的标题,确实将其公开为属性

@property (nonatomic, readonly) BOOL isDirectory;

所以你可以像这样做一个简单的测试

- (void)restClient:(DBRestClient*)client loadedMetadata:(DBMetadata*)metadata
{
    if (metadata.isDirectory) {
        // handle directory here
    } else {
        // handle file here
    }
}

关于根据条目是否是目录来推送视图,您可以继承UITableViewCell并添加isDirectory属性。您可以添加包含self.metaArray的名称和值的字典,而不是仅将名称添加到isDirectory。然后在您的表视图数据源中填充单元格,您将根据数组中相应字典中的相同属性设置isDirectory的{​​{1}}属性。最后,在表视图中委托方法

UITableViewCell

您可以使用- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath获取所选单元格,然后测试indexPath属性并根据其值采取相应的操作。

希望这有帮助。

答案 1 :(得分:4)

使用Dropbox的API V2与Dropbox SDK:

DropboxClient *client = [DropboxClientsManager authorizedClient];
[[client.filesRoutes listFolder:path]
 response:^(DBFILESListFolderResult *result, DBFILESListFolderError *routeError, DBRequestError *error) {
     if (result) {

         for (DBFILESMetadata *entry in result.entries) {
             if ([entry isKindOfClass:[DBFILESFileMetadata class]]) {
                 DBFILESFileMetadata *fileMetadata = (DBFILESFileMetadata *)entry;
                 NSLog(@"File: %@", fileMetadata.name);
             } else if ([entry isKindOfClass:[DBFILESFolderMetadata class]]) {
                 DBFILESFolderMetadata *folderMetadata = (DBFILESFolderMetadata *)entry;
                 NSLog(@"Folder: %@", folderMetadata.name);
             }
         }
     }
相关问题