您好我正在使用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];
}
答案 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);
}
}
}