Открытие txt файла из iCloud

В моем приложении я пытаюсь сделать простую вещь - сохранить текстовый файл и файл изображения в iCloud, а затем извлечь его обратно, чтобы открыть в приложении.

Прямо сейчас я могу сохранить как txt, так и файлы изображений в iCloud - без проблем. Я даже могу вытащить URL-адреса и имена файлов документов из iCloud - там тоже нет проблем. Но мой вопрос, как мне открыть TXT-файл? Какой пример кода, чтобы открыть текстовый файл из iCloud и получить текстовое содержимое? Мой текстовый файл документа является подклассом UIDocument, если это помогает.

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) {
....

Вы можете проверить сессию Apple на icloud и UIDocument https://developer.apple.com/videos/wwdc/2012/?id=218

Надеюсь, поможет.

Другие вопросы по тегам