2015-10-15 89 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]; 

我看起来像复制更新信息无处不在目录混淆了系统之前删除文件的操作。切换到第二种形式后,我不再看到这个问题。

希望此答案可以帮助别人。