1

大家好,我正在开发一个应用程序,它可以从任何内容管理系统中调出整个文件夹和文件结构,目前我已经完成了 Box 和 sharepoint 集成。我现在正在寻找同步 Dropbox。在 DBMetaData 类中,我有属性

BOOL thumbnailExists;
NSArray* contents;
NSString* icon;
  1. 我想在这里做的第一件事是我想加载文件的缩略图,我没有得到一个图标属性返回一个字符串的东西,比如'page_white_acrobat'(我认为它会返回一个 url 或者我可以下载的东西缩略图)。有什么方法可以使用 Dropbox sdk 带来缩略图。我还上传了一个 .mp4 文件和 .png 文件,当我在 chrome 中打开保管箱时它们会显示缩略图,但在 SDK 中 thumbnailExists 属性返回 NO。

  2. 其次,我想要子文件夹的数量和文件夹的文件,我尝试访问文件夹 DBMetaData 对象的内容属性,它返回 nil。SDK中是否有任何方法可以计算文件夹中的文件数量或任何解决方法。

4

2 回答 2

3
  1. 似乎 Dropbox 只是提供了他们使用的图标的名称。你不能下载它,所以你应该检查这个字符串并使用你的应用程序包中的资源。

  2. DBMetadata 对象的内容将为空,直到您实际请求在该路径加载元数据。

此代码将使您开始使用子目录。

-(void)restClient:(DBRestClient *)client loadedMetadata:(DBMetadata *)metadata
{
    // LOAD METADATA OF SUBDIRECTORIES
    for (DBMetadata *node in metadata.contents) {
        if (node.isDirectory) {
            [_restClient loadMetadata: node.path];
        }
    }

    // GET COUNT OF DIRECTORY CONTENTS
    if (metadata.isDirectory) {
        NSLog(@"%@ contains %d files and folders", metadata.path, metadata.contents.count);
    }
}
于 2013-05-16T16:30:38.410 回答
2

要列出路径或目录的内容,您需要调用 DBRESTClient 对象的以下方法:

 - (void)loadMetadata:(NSString*)path;

然后调用以下委托回调(请参阅方法主体的代码以下载列出目录中每个文件的缩略图):

 - (void)restClient:(DBRestClient*)client loadedMetadata:(DBMetadata*)metadata
 {
     for (DBMetadata *file in metadata.contents)
     {
         // 1. Use the DBMetadata * file object to do things like: add a table-view cell for the file.
         [self.filesListView addCellForFile: file];
         // 2. Request thumbnail for each file
         NSString *localThumbnailPath = [self localThumbnailPathForFile: file]; // create a local-file-path for the thumbnail
         [dbRestClient loadThumbnail: file.path ofSize:@"l" intoPath:localThumbnailPath];
     }
 }

在上述方法中, loadThumbnail:ofSize:intoPath: 方法将导致调用以下委托回调:

 - (void)restClient:(DBRestClient*)client loadedThumbnail:(NSString*)localPath

从中,您必须使用给定的 localPath 来使用下载的缩略图更新您的 UI。

于 2014-04-09T00:07:24.543 回答