覆盖 Dropbox Core 中的文件会产生冲突的副本
Posted
技术标签:
【中文标题】覆盖 Dropbox Core 中的文件会产生冲突的副本【英文标题】:Overwriting File In Dropbox Core Produces Conflicted Copies 【发布时间】:2015-04-02 10:48:35 【问题描述】:我正在尝试将上传的文件覆盖到 Dropbox。
Dropbox 没有替换文件,而是不断添加另一个 conflicted copy
,
我已经使用
for (DBMetadata *file in metadata.contents)
NSLog(@" %@ metadata %@", file.filename,file.rev);
打印myFile.sqlite metatdata 5372f37f73G
我正在上传文件:
[restClient uploadFile:@"myFile.sqlite" toPath:@"/Data" withParentRev:@"5372f37f73G" fromPath:filePath];
检查How to overwrite file with parent rev using Dropbox API in ios?
How to avoid "conflicted copy" when uploading to dropbox from iOS client
dropbox keeps creating conflicted copies ios sdk (core api)
我在这里错过了什么?
【问题讨论】:
您确定这是最新的rev
值吗?如果文件已更改,rev
将更改,因此如果您使用的是旧文件,则会得到一个冲突的副本。另外,请确保您选对了。即,确保您没有为其他文件或文件夹复制 rev
。看起来您在这里的帖子中可能有错字。你在一个地方有“5372f37f73G”,但在另一个地方有“5372f37f73f”。
啊,我以为转速保持不变。是的,该行中的错字(键入而不是粘贴该位)。感谢您的评论,将报告调整我的代码...
没问题。 rev
更改以标识文件的每个版本,以避免不同客户端可能覆盖另一个客户端的数据的竞争条件。您可以在此处找到有关其工作原理的更多信息:dropbox.com/developers/core/docs#files_put
我仍然没有得到这个,我想在这里使用的正确转速值是多少?我如何获得新的转速值而不是旧的?加载后我可以使用委托方法访问它,但我假设这是旧值,因为我仍然遇到相同的冲突?
rev
的“正确”值应该是您正在处理的副本的值,因为没有更好的术语。这个想法是你传递你认为是最新版本的rev
,如果是这样,文件就会被覆盖。如果没有,就会产生冲突,因为版本历史已经有效地分支。因此,如果您下载文件、修改文件并上传新版本,您在上传时提供的rev
应该是下载时的rev
。
【参考方案1】:
我在- (void)restClient:(DBRestClient *)client loadedMetadata:(DBMetadata *)metadata
中为其他任何人调用了错误的元数据文件夹
//Calls all files for your app folder
[self.restClient loadMetadata:@"/"];
//Calls a folder you created within your app folder
[self.restClient loadMetadata:@"/yourfolder"];
【讨论】:
以上是关于覆盖 Dropbox Core 中的文件会产生冲突的副本的主要内容,如果未能解决你的问题,请参考以下文章