代码之家  ›  专栏  ›  技术社区  ›  user3665916

用于iOS的Dropbox v2 api-如何获取clientMTime?

  •  0
  • user3665916  · 技术社区  · 7 年前

    我正在将使用Dropbox v1 API构建的应用程序迁移到v2 API。应用程序需要将源dropbox文件夹中的文件同步到应用程序文档文件夹。当前版本的应用程序使用clientMTime跳过未更改的同步文件。通过v1,我获得了所需的信息——特别是Dropbox文件夹中每个文件的路径和clientMTime——通过这样做。。。

    //  ==============================================================
    //  getDBMetadata
    //  ==============================================================
    
    - (void)getDBMetadata 
    {
        NSString* theOPMLFilesRoot = @"/";
        [self.restClient loadMetadata:theOPMLFilesRoot withHash:self.opmlFilesHash];
    }
    
    
    //  ==============================================================
    //  restClient:loadedMetadata:
    //  ==============================================================
    
    - (void)restClient:(DBRestClient*)client loadedMetadata:(DBMetadata*)metadata 
    {
        self.opmlFilesHash = metadata.hash;               // Used to check for changes
    
        for (DBMetadata* __unused theMetadata in metadata.contents) {
            LogDebug(@"Path: %@, clientMtime: %@.", theMetadata.path , [theMetadata.clientMtime toStr]);
        }
    
        [self synchronizeFilesUsingDBMetadata:metadata];
    }
    

    Dropbox对象“DBFILESMetadata”的v2 iOS API文档包括“path”,但 不要 将clientMtime列为包含的属性(他们称之为“field”)。有没有办法用v2获取clientMTime?

    1 回复  |  直到 7 年前
        1
  •  0
  •   Greg    7 年前

    这个 DBFILESMetadata 可以表示文件、文件夹或已删除的项目。但是,只有文件具有客户端修改时间,所以 clientModified 仅适用于 DBFILESFileMetadata ,它仅表示文件。

    是的子类 DBFILESMetadata . 检查特定 DBFILESMetadata 是一个 DBFILESFileMetadata ,您可以使用 isKindOfClass 如图所示 here

    此外,请注意 rev contentHash 是检查文件是否已更改的更好选项。