在 iCloud 中使用预先存在的 NSFileManager 代码

Posted

技术标签:

【中文标题】在 iCloud 中使用预先存在的 NSFileManager 代码【英文标题】:Using Pre-Existing NSFileManager Code with iCloud 【发布时间】:2012-06-18 23:26:33 【问题描述】:

我刚刚编写了几百行代码,用于在我的 ios 应用程序中保存文件、打开文件和删除文件……然后我意识到我可能应该探索 iCloud 并在编写代码时将其集成。

有什么方法可以将 iCloud 集成到预先存在的 Documents 结构、nsfilemanager 类等中? 还是我必须从头开始重新编写大部分代码?

另外,无论哪种方式,是否有任何 iCloud 项目 (similar to this one) 可以让我轻松集成 iCloud Document Sync?


只是我正在使用的一些代码的快速示例:

//Begin saving file
NSLog(@"Began Saving File");
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:filetitle];

//Get the user's keyword preference
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
BOOL enabled = [defaults boolForKey:@"completeFile"];

[[NSString stringWithFormat:@"Message:%@", MessageText] writeToFile:filePath atomically:TRUE encoding:NSUTF8StringEncoding error:NULL];

编辑:我在 GitHub 上创建了一个名为 iCloud Document Sync 的项目,允许开发人员轻松地将 iCloud 与其基于文档的 iOS 应用程序集成。问题是它并没有真正遵循普通 iCloud 文件所经历的设计/结构:

    文件已复制到 iCloud 然后在本地编辑文件并将更改上传到 iCloud 我们必须以某种方式检查本地文件是否比 iCloud 中的文件旧

我的 GitHub 项目在一定程度上解决了这个问题,但我不知道如何从本地目录复制文件而不是移动它们。我遇到的第二个问题是弄清楚如何编辑该本地文件并推送更改 - 当我尝试将更改推送到云中的文件时,我收到一个 Cocoa 错误,上面写着:

Cocoa 错误 516:文件存在

最后,我不确定如何检查本地文件和云文件之间的差异/冲突。我认为问题在于代码的设计和流程 - 但是我认为由于场景需要代码的布局。


编辑:我读了这个SO question,这似乎是我要问的一部分,但我想提供一个更清晰、更明确的答案。

【问题讨论】:

【参考方案1】:

这可能会有所帮助。这就是苹果在他们的文档中描述的方式。 https://developer.apple.com/library/mac/#documentation/General/Conceptual/iCloudDesignGuide/Chapters/DesigningForDocumentsIniCloud.html#//apple_ref/doc/uid/TP40012094-CH2-SW1

【讨论】:

以上是关于在 iCloud 中使用预先存在的 NSFileManager 代码的主要内容,如果未能解决你的问题,请参考以下文章

文件存在于 iCloud 中,但 query.resultCount = 0

验证 iCloud 容器上的文档是不是存在

存在 iCloud 帐户时 MFMailComposeViewController 中的错误?

iCloud:在 OS X 上获取云中存在的一系列 txt 文件

iCloud:获取云中存在的文件数组

tvOS 上的 iCloud 同步