【问题标题】:Is it safe to use NSFileManager API to manipulate files in iCloud?使用 NSFileManager API 操作 iCloud 中的文件是否安全?
【发布时间】:2013-05-05 13:24:16
【问题描述】:

只需在 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.在捆绑目录中需要维护。但是,如果您只想管理云中的一堆独立文件,这似乎开销太大。尤其是考虑到此 API 的性质。
  • 我考虑过使用 UIDocument:考虑到类的一次加载/存储所有内容的方法,将文件夹视为文档并不合适。将每个文件都当作一个文档来处理感觉还可以,但是很麻烦。

【问题讨论】:

    标签: ios cocoa-touch icloud nsfilemanager


    【解决方案1】:

    我确信使用 iCloud 并不简单!

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

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

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

    祝你好运

    【讨论】:

      猜你喜欢
      • 2012-08-01
      • 2012-04-16
      • 1970-01-01
      • 2020-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多