从 iCloud 打开 txt 文件

Posted

技术标签:

【中文标题】从 iCloud 打开 txt 文件【英文标题】:Opening txt file from iCloud 【发布时间】:2012-09-01 03:43:39 【问题描述】:

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

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

【问题讨论】:

我认为这会有所帮助***.com/questions/7795629/… 【参考方案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 https://developer.apple.com/videos/wwdc/2012/?id=218 上查看 Apple 的会话

希望对你有帮助。

【讨论】:

以上是关于从 iCloud 打开 txt 文件的主要内容,如果未能解决你的问题,请参考以下文章

从 icloud 打开文件时,Swift 4 应用程序崩溃

无需用户从 DocumentBrowser 中选择即可呈现 iCloud 文件

如何在 Swift 中以编程方式打开 icloud 应用程序(文件)

iCloud:在 OS X 上获取云中存在的一系列 txt 文件

如何从 Icloud Swift 上的文件中获取数据

在 iCloud(无 Pages)中查看文件以进行 iOS 应用测试?