2013-04-27 20 views
4

我創建了一個簡單的iOS測試應用程序,可在本地創建文件並將其上傳到關聯的保管箱共享中。我的目標是根據某些事件(按下按鈕)繼續更新此文件(覆蓋它)。該文件的內容僅僅是事件發生時的當前日期&。如何避免從iOS客戶端上傳到保管箱時出現「衝突副本」

當我第一次運行該應用程序,上傳屢試不爽 - 如果文件中使用此存在被覆蓋之前(更新):

NSString * destination = @"/"; 
NSString * rev = [_fileDetailsDict objectForKey:[destination stringByAppendingString:fileName] ]; 
[[self restClient] uploadFile:fileName toPath:destination withParentRev:rev fromPath:fullPath]; 

藉助於此_fileDetailsDict持有父轉速,以覆蓋該文件需要而不是創建副本。

麻煩的是,如果應用程序試圖更新文件第二次(根據我按下一個按鈕),我總是從投寄箱的「衝突複製」的錯誤響應。相反,如果我重新啓動我的應用程序,更新會再次正常。起初,我認爲這是一個時間問題,但即使我等待幾分鐘按下按鈕,這個問題仍然存在。

它「感覺」好像我沒有以某種方式關閉上傳到Dropbox。我錯過了什麼?

+2

第一次上傳文件導致新的版本。爲了能夠進行第二次上傳,您需要指定這個新的父版本。 – rmaddy 2013-04-27 15:51:40

+0

是的,我想到了。所以,在調用uploadFile之後:我卡住了: [[self restClient] loadMetadata:@「/」]; 其中我捕獲了loadedMetadata:delegate方法的結果,更新了rev屬性。沒有區別。 uploadFile:和loadMetadata之間應該有一段等待時間:? – Yohst 2013-04-27 17:43:01

+1

哦,想通了 - 我沒有完全理解這些都是異步方法。而不是在uploadFile:方法之後更新版本,我應該捕獲uploadedFile:delegate方法中的新版本,當所有操作完成時將被觸發。感謝您爲我設置rmaddy。 – Yohst 2013-04-27 17:51:27

回答

0

嘗試將nil傳遞給withParentRev參數。我猜你知道文件.rev參數的用法,我嘗試將nil傳遞給參數,並且每次都創建一個新文件(而不是副本)。

可能這會對你有很大的幫助。當我遇到類似問題時,我提到了這個問題。

+0

我不想要副本,我需要更新(覆蓋)原始文件。通過零會給我: 我的file.txt 我的文件(1).txt 我的文件(2).txt等... 我只是想「我的file.txt」不斷更新。 – Yohst 2013-04-27 17:38:41