如何在 iPhone 中设置 iCloud Root?
Posted
技术标签:
【中文标题】如何在 iPhone 中设置 iCloud Root?【英文标题】:How to set iCloud Root in iPhone? 【发布时间】:2013-02-20 10:16:02 【问题描述】:在这里我为文档存储创建了本地根目录,但我想实现 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;
【问题讨论】:
【参考方案1】:您可以使用以下方法找到 iCloud“根”目录:
NSURL *url = [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil];
如果您的应用只有一个 ubiquity 容器,则可以传递 nil
作为参数,否则必须传递容器标识符。
您还可以使用它来检查 iCloud 是否可用于您的应用程序 - 如果它返回 nil
,则您不能使用 iCloud。不过,这不是检查可用性的最佳方法,因为它可能会阻塞一段时间。要进行快速、非阻塞检查,请使用以下命令:
id token = [[NSFileManager defaultManager] ubiquityIdentityToken];
然后一定要注意NSUbiquityIdentityDidChangeNotification
,以防可用性发生变化。
但是:这还远远不足以开始使用 iCloud 存储文档。您不能只读取/写入该目录中的文件并让 iCloud 做正确的事情。您至少需要:
NSMetadataQuery
查找存在于云服务器上但未下载到本地的文档。
-[NSFileManager startDownloadingUbiquitousItemAtURL:error:]
告诉 iCloud 开始下载您通过元数据查询找到的文档。
通过NSFileCoordinator
协调访问,通过NSFilePresenter
通知更改。
Apple 有很多文档和来自 WWDC 的视频可以帮助解决这个问题。
【讨论】:
以上是关于如何在 iPhone 中设置 iCloud Root?的主要内容,如果未能解决你的问题,请参考以下文章