我的iOS應用程序使用他們的Sync API定期將文件上傳到Dropbox應用程序文件夾。覆蓋現有文件時,一切似乎都正常工作,直到發生還原。Dropbox iOS SDK在還原後不必要地創建衝突副本
重置和恢復(使用iTunes備份)後,保留到Dropbox的鏈接(例如https://stackoverflow.com/a/13136066/1148702),但有些不太正確。覆蓋Dropbox應用程序文件夾中的現有文件時,Dropbox會創建衝突副本,但僅在初始寫入時創建。隨後,沒有衝突副本的問題。
下面是我如何寫我的Dropbox,並檢查現有的文件。我已經刪除了這段代碼中的錯誤檢查。
- (void)writeDataToDropbox:(NSData *)data inFileAtPath:(NSString *)pathString {
DBPath *path = [[DBPath root] childPath:pathString];
DBFile *file;
DBFileInfo *info = [[DBFilesystem sharedFilesystem] fileInfoForPath:path error:nil];
if (info) {
file = [[DBFilesystem sharedFilesystem] openFile:path error:nil];
} else {
file = [[DBFilesystem sharedFilesystem] createFile:path error:nil];
}
[file writeData:data error:nil];
}
任何想法?
看起來您的設備恢復正在恢復Sync SDK中緩存/元數據的舊狀態,因此當您再次寫入數據時,實際上是在舊版本上「上傳」,導致衝突。如果你想確保你使用的是最新版本,你需要註冊一個觀察者,等待所有新的刪除更改先下載,然後再更新,然後再編寫任何其他本地更改。 – Greg
@Greg謝謝你的提示。我認爲緩存/元數據的「舊狀態」實際上並不舊。爲了測試這種情況,我正在烘烤,重置並在短時間內恢復所有內容。無論如何:我不確定你的解決步驟實際上意味着什麼。什麼是「新的刪除更改」?我如何註冊觀察員觀察這些?我如何要求Sync SDK進行更新?我希望這在文檔中更清楚: - /(也許我只是錯過了一些明顯的東西!) –
對不起,這應該是說「新的遠程更改」。本教程的這一部分涵蓋了觀察者和更新:https://www.dropbox.com/developers/sync/start/ios#observers此外,請查看SDK附帶的示例應用程序,以查看它的所有實際操作。 – Greg