0

在我的应用程序中,我正在尝试做一件简单的事情 - 将一个 txt 文件和一个图像文件保存到 iCloud,然后将其取回以在应用程序上打开它。

现在,我可以将 txt 和图像文件都保存到 iCloud 中——没问题。我什至可以从 iCloud 中提取文档的 URL 和文件名——那里也没有问题。但我的问题是,如何打开 txt 文件?从 iCloud 打开 txt 文件并获取文本内容的示例代码是什么?我的 txt 文件文档是 UIDocument 的子类,如果有帮助的话。

4

1 回答 1

1

好吧,我注意到在你问这个问题后大约 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

希望能帮助到你。

于 2013-01-23T13:11:45.493 回答