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

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

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


person BlueChips23    schedule 01.09.2012    source источник
comment
Думаю, это поможет stackoverflow.com/questions/7795629/   -  person Volodymyr B.    schedule 03.10.2012


Ответы (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

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

person Dannie P    schedule 23.01.2013