使用NSFileManager API来操作iCloud中的文件是否安全?

时间:2013-05-10 19:19:50

标签: ios cocoa-touch icloud nsfilemanager

只需在ubiquity容器中创建文件就可以将文件同步到iCloud:

NSFileManager *fileManager = [NSFileManager defaultManager];
NSURL *containerURL = [fileManager URLForUbiquityContainerIdentifier:nil];
NSURL *dirURL = [containerURL URLByAppendingPathComponent:@"files" isDirectory:YES];

NSError *error;
[fileManager createDirectoryAtURL:dirURL withIntermediateDirectories:NO attributes:nil error:&error];

NSURL *icloudURL = [dirURL URLByAppendingPathComponent:@"somefile.txt"];
[fileManager createFileAtPath:[icloudURL path] contents:someData attributes:nil];

这可行并且似乎是将文件放入iCloud的简单而直接的方式,但我在文档或提示中找不到允许此类API使用的示例。产生问题: 这样安全吗?这是Apple API文档允许的吗?它有任何已知问题吗?

说明:

  • 我正在寻找在iCloud中管理大量无关文件的最简单方法。
  • 给定的方法对于setUbiquitous更简单:itemAtURL:destinationURL:error:-method因为它允许从NSData临时保存文件,而无需在应用程序沙箱中创建临时文件,并且它会覆盖现有文件而无需额外检查该情况
  • setUbiquitos-API doc说:“您的应用必须配置一个活动文件presenter对象,以便在调用此方法之前监视指定的文件或目录。”并且iCloud设计指南说“始终使用文件协调器来访问iCloud文件或文件包。”如果给定的代码有问题,这让我担心。
  • 当许多文件的一致性为f.e时,我看到需要FileCoordinator / FilePresenter。在捆绑目录中需要维护。但是,如果您只是想在云中管理一堆独立文件,这似乎是一个太多的开销。特别是鉴于此API的性质。
  • 我考虑过使用UIDocument:考虑到类的加载/存储 - 一切都是这样的方法,将文件夹视为文档并不合适。将每个文件视为文档感觉还可以,但非常麻烦。

1 个答案:

答案 0 :(得分:0)

有一件事我确信使用iCloud并不简单!

有太多的例外,我认为它们从未发生但它们仍然存在。 (例如:有时iCloud向我的应用程序发送了一个NSConcreteData对象,但我的应用程序使用了NSFileWrapper;有时我的文件变成了一个文件夹,几分钟后它就会回复文件)

有很多方法可以访问iCloud。这是一个简单的方法: http://www.raywenderlich.com/12779/icloud-and-uidocument-beyond-the-basics-part-1

记住在使用iCloud时一定要小心(一切都会发生)

祝你好运