适用于iOS的Dropbox v2 api - 您如何获得clientMTime?
问题描述:
我正在将使用Dropbox v1 API构建的应用程序迁移到v2 API。该应用程序需要将源文件夹中的文件同步到应用程序文档文件夹中。当前版本的应用程序使用clientMTime跳过同步未更改的文件。随着V1,我得到了所需的信息 - 在Dropbox的文件夹中的每个文件的具体路径和clientMTime - 做这个...适用于iOS的Dropbox v2 api - 您如何获得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“第2版的iOS API文档包括”路径“,但不要列表clientMtime作为一个包含的属性(他们正在调用'字段')。有没有办法让v2获得clientMTime?
答
DBFILESMetadata
可以代表文件,文件夹或已删除的项目。只有文件具有客户端修改时间,所以clientModified
仅在DBFILESFileMetadata
上可用,它仅表示文件。
DBFILESFileMetadata
是DBFILESMetadata
的子类。要检查某个特定的DBFILESMetadata
是否为DBFILESFileMetadata
,可以使用isKindOfClass
,如here所示。然后你可以将它投射到相关的子类。
此外,请注意,rev
或contentHash
是检查文件是否更改的更好选项。