如何在iPhone中设置iCloud根目录?

如何在iPhone中设置iCloud根目录?,iphone,ios6,icloud,Iphone,Ios6,Icloud,在这里,我为文档存储创建了本地根目录,但我想实现iCloud。因此,我需要创建iCloud根目录,并且我将检查iCloud是否可用。如果有可能创建类似的方法。这里我添加了我的本地根方法代码 - (NSURL *)localRoot { if (_localRoot != nil) { return _localRoot; } NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUse

在这里,我为文档存储创建了本地根目录,但我想实现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;
  }
您可以通过以下方式找到iCloud“root”目录:

NSURL *url = [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil];
如果您的应用程序只有一个ubiquity容器,则可以为参数传递
nil
,否则必须传递容器标识符

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

id token = [[NSFileManager defaultManager] ubiquityIdentityToken];
然后确保遵守
NSUbiquityIdentityDidChangeNotification
,以防可用性发生变化

然而,这还远远不足以开始在文档中使用iCloud。你不能只是读/写那个目录中的文件,然后让iCloud做正确的事情。您至少需要:

  • NSMetadataQuery
    查找云服务器上存在但未在本地下载的文档
  • -[NSFileManager startdownloadingubiquitousitemature:error://告诉iCloud开始下载您通过元数据查询找到的文档
  • 通过
    NSFileCoordinator
    协调访问,并通过
    NSFilePresenter
    通知更改
苹果公司有很多文档和WWDC的视频可以帮助解决这个问题