2015-10-15 83 views
1

我一直在嘗試改造一個大型應用程序,讓它將文件存儲在iCloud中。該應用程序並不是真正的「基於文檔」,但這些文件可能被認爲是配置文件或偏好文件。iCloud文件版本和神祕文件

說實話我沒有遵循所有的蘋果iCloud指南。有些確實不適合應用程序的流程。當應用程序啓動時,我從ubiquity目錄中讀取文件(使用正常的文件讀取),當我寫入它們時,我使用普通文件寫入到ubiquity目錄。當應用程序開始,我也呼籲:

[fileManager startDownloadingUbiquitousItemAtURL:url error:&error]; 

我有一個NSFilePresenter看在普及目錄更改。它通知我文件更改,但從未發生任何衝突通知。

我的問題是,當我上傳文件到iCloud時,它會創建一個附加了數字的單獨文件。例如。

MyFile.skyset 
MyFile 2 .skyset 

這些似乎表明了當一個以上的應用程序已經被寫入MyFile.skyset到無處不在的目錄。

他們似乎沒有衝突的文件版本。如果我使用NSFileVersion來查找衝突和其他版本,我只能看到MyFile.skyset的一個版本,並且沒有衝突。

我找不到任何文件解釋這個「版本」文件是什麼以及如何處理它。關於這裏發生了什麼的任何想法?

回答

0

嗯,我不完全理解「版本」,但問題已通過更改我更新ubiquity目錄中的文件來解決。

我改變來自:

[fileMgr removeItemAtPath:dstPath error:nil]; 
[fileMgr copyItemAtPath:srcPath toPath:dstPath error:&error]; 

要:

NSData *data = [NSData dataWithContentsOfFile:srcPath]; 
[data writeToFile:dstPath atomically:NO]; 

我看起來像複製更新信息無處不在目錄混淆了系統之前刪除文件的操作。切換到第二種形式後,我不再看到這個問題。

希望此答案可以幫助別人。