Dropbox v2 api for iOS - 你如何获得 clientMTim​​e?

Dropbox v2 api for iOS - how do you get clientMTime?

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

//  ==============================================================
//  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 获取 clientMTim​​e?

DBFILESMetadata can represent a file, folder, or deleted item. Only files have a client modified time though, so clientModified is only available on DBFILESFileMetadata,只代表一个文件。

DBFILESFileMetadata is a subclass of DBFILESMetadata. To check if a particular DBFILESMetadata is a DBFILESFileMetadata, you can use isKindOfClass as shown here。然后您可以将其转换为相关的子类。

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