在我的应用程序中,我正在尝试做一件简单的事情 - 将一个 txt 文件和一个图像文件保存到 iCloud,然后将其取回以在应用程序上打开它。
现在,我可以将 txt 和图像文件都保存到 iCloud 中——没问题。我什至可以从 iCloud 中提取文档的 URL 和文件名——那里也没有问题。但我的问题是,如何打开 txt 文件?从 iCloud 打开 txt 文件并获取文本内容的示例代码是什么?我的 txt 文件文档是 UIDocument 的子类,如果有帮助的话。
在我的应用程序中,我正在尝试做一件简单的事情 - 将一个 txt 文件和一个图像文件保存到 iCloud,然后将其取回以在应用程序上打开它。
现在,我可以将 txt 和图像文件都保存到 iCloud 中——没问题。我什至可以从 iCloud 中提取文档的 URL 和文件名——那里也没有问题。但我的问题是,如何打开 txt 文件?从 iCloud 打开 txt 文件并获取文本内容的示例代码是什么?我的 txt 文件文档是 UIDocument 的子类,如果有帮助的话。
好吧,我注意到在你问这个问题后大约 4 个月。也许这对这里的其他寻求灵魂有帮助。
基本上,在 iOS 上,您首先通过查询所有文档来打开 UIDocument,然后打开 iCloud 响应您的内容。以下是您开始查询的方式:
NSURL *baseURL = [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil];
if (baseURL)
{
_metadataQuery = [[NSMetadataQuery alloc] init];
[_metadataQuery setSearchScopes:[NSArray arrayWithObject:NSMetadataQueryUbiquitousDocumentsScope]];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%K like '*'", NSMetadataItemFSNameKey];
[_metadataQuery setPredicate:predicate];
CL_DLog(@"Start query - %d",[_metadataQuery startQuery]);
}
在执行上述代码之前,订阅这些通知以接收响应
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(queryDidFinish:) name:NSMetadataQueryDidFinishGatheringNotification object:_metadataQuery];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(queryDidFinish:) name:NSMetadataQueryDidUpdateNotification object:_metadataQuery];
然后在您的回复中,您可以打开文档
YourUIDocumentClassName *document = [[YourUIDocumentClassName alloc] initWithFileURL:documentURL];
if ([document documentState] != UIDocumentStateClosed)
{
CL_DLog(@"FYI - metadata document state is not StateClosed.");
}
[document openWithCompletionHandler:^(BOOL success) {
....
您可以在 icloud 和 UIDocument 上查看 Apple 的会话https://developer.apple.com/videos/wwdc/2012/?id=218
希望能帮助到你。