iCloud で問題なく動作するアプリを持っています。問題なくファイルを作成、保存、編集できます。
私が抱えている問題は、他のデバイスにアプリを新規インストールすることです。新規インストールであるため、ユビキタス フォルダーは存在しますが、その中には何もありません。ドキュメントをクラウドに保存した元のアプリと同じアカウントとファイル名を持つ新しくインストールされたアプリをリモートの iCloud フォルダーで検索する方法を知りたいです。
私はこの機能があることを知っています:
[NSFileManager defaultManager] setUbiquitous: itemAtURL:destinationURL: error:
「setUbiquitous」は NO に設定でき、itemAtURL は iCLoud リモート URL であり、destinationURL は [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil] によって返されるファイルパスです。
しかし、リモート URL のように聞こえる itemAtURL を取得するにはどうすればよいでしょうか。それとも、これは呼び出す関数が間違っていますか?
更新:これは私のクエリ関数です
NSMetadataQuery *tmpQuery = [[NSMetadataQuery alloc] init]; _query = tmpQuery;
[tmpQuery setSearchScopes:[NSArray arrayWithObjects: NSMetadataQueryUbiquitousDocumentsScope, nil]];
NSPredicate *tmpPred = [NSPredicate predicateWithFormat:@"%K == %@", NSMetadataItemFSNameKey, inDocName];
[tmpQuery setPredicate:tmpPred];
// we must add this so that we know when the query has completed
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(queryDidFinishGathering:) name:NSMetadataQueryDidFinishGatheringNotification object:_query];
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(iCloudQueryDidUpdate:)
name:NSMetadataQueryDidUpdateNotification
object:_query];
});
[tmpQuery startQuery];
それは私がテストしている方法かもしれないと思います。デバイスからアプリを削除し、[設定] > [iCloud] に移動してドキュメントを削除すると、iCloud サーバーからもドキュメントを削除しているように見えます。これは事実でしょうか?