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

标签 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 文档说“您的应用程序必须配置一个事件文件呈现器对象,以在调用此方法之前监视指定的文件或目录。”并且 iCloud 设计指南说“始终使用文件协调器来访问 iCloud 文件或文件包。”。如果给定的代码有问题,这让我担心。
  • 当许多文件 f.e. 的一致性时,我看到需要 FileCoordinator/FilePresenter。在捆绑目录中需要维护。但是,如果您只想管理云中的一堆独立文件,这似乎开销太大。特别是考虑到这个 API 的性质。
  • 我考虑过使用 UIDocument:考虑到类的加载/存储所有内容的方法,将文件夹视为文档感觉不太合适。将每个文件视为文档感觉还可以,但很麻烦。
  • 最佳答案

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

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

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

    记住在使用 iCloud 时要小心(任何事情都有可能发生)

    祝你好运

    关于ios - 使用 NSFileManager API 操作 iCloud 中的文件是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16489382/

    相关文章:

    ios - 如何在我的 App Controller 中使用相机

    iOS iCloud 文档 : can I prevent documents from being purged?

    iphone - iCloud 集成警告

    objective-c - 是否可以更改 NSTimer 的用户信息?

    ios - 关于UIScrollView subview 上的动画

    ios - 具有 AsyncDisplayKit 布局的简单单元格

    ios - UIBarButtonItem 不工作

    ios - 在图像加载中替代 NSData