0

私のアプリでは、簡単なことをしようとしています.txtファイルと画像ファイルをiCloudに保存し、それを取得してアプリで開きます。

今のところ、txt ファイルと画像ファイルの両方を iCloud に保存できます - 問題ありません。ドキュメントの URL とファイル名を iCloud から取得することもできます。これも問題ありません。しかし、私の質問は、どうすれば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 に答える