2

在这里,我为文档存储创建了本地根目录,但我想实现 iCloud。所以我需要创建 iCloud 根目录,并且我会检查 iCloud 是否可用。如果可以创建类似的方法。在这里我添加了我的本地根方法代码

- (NSURL *)localRoot {

if (_localRoot != nil) {
    return _localRoot;
}


NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSString *documentsDirectory = [paths objectAtIndex:0];

NSString *artdirectoryPath = [documentsDirectory stringByAppendingPathComponent:@"/Me"];


_localRoot=[[NSURL alloc]initFileURLWithPath:artdirectoryPath];


return _localRoot;
  }
4

1 回答 1

0

您可以使用以下命令找到 iCloud“根”目录:

NSURL *url = [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil];

如果您的应用只有一个通用容器,则可以传递nil参数,否则必须传递容器标识符。

您还可以使用它来检查您的应用程序是否可以使用 iCloud——如果它返回nil,则您不能使用 iCloud。不过,这不是检查可用性的最佳方法,因为它可能会阻塞一段时间。要进行快速、非阻塞检查,请使用以下命令:

id token = [[NSFileManager defaultManager] ubiquityIdentityToken];

然后一定要观察NSUbiquityIdentityDidChangeNotification以防可用性发生变化。

但是:这还远远不足以开始使用 iCloud 存储文档。您不能只读取/写入该目录中的文件并让 iCloud 做正确的事情。您至少需要:

  • NSMetadataQuery查找存在于云服务器上但未在本地下载的文档。
  • -[NSFileManager startDownloadingUbiquitousItemAtURL:error:]告诉 iCloud 开始下载您使用元数据查询找到的文档。
  • 通过 协调访问NSFileCoordinator,并通过 通知更改NSFilePresenter

Apple 有很多文档和来自 WWDC 的视频,这将有助于解决这个问题。

于 2013-02-20T18:47:33.880 回答