3

私は( UIManagedDocumentとして) 1つの単一のCore Dataデータベースを備えた非常にシンプルな靴箱スタイルのiOSアプリを持っており、iCloudサポートを追加しようと考えました。


もちろん、起動時に新しいUIManagedDocumentを作成したり、保存したり開いたりする前に、クラウドに既存のデータベースが存在するかどうかを確認する必要があります。

はすでにファイル名を知っていて、ドキュメントが1つあるか、まったくないことを知っているので、必要な場合は実際には取得できませんでした

  1. 正確なファイル名の述語を使用してNSMetaDataQueryを開始し、結果からfileURLを 取得て(明示的にダウンロードしますか?)、存在する場合はそれを開きます。

  2. URLForUbiquityContainerIdentifierから作成されたものと追加して使用するだけ[[NSFileManager defaultManager] fileExistsAtPath:self.iCloudDBURL] ですか?このURLはローカルURLのみであり、「実際の」クラウドを自動的にチェックしませんか?iCloudDBURL


UIManagedDocumentの使用は、この種のアプリにとって「正しい」方法ではないかもしれないことは知っていますが、もっと簡単だと思い、試してみることができました。

4

1 に答える 1

3

NSMetadataQueryこのアプローチを使用する必要があります。

iCloudでiOSを使用している場合、ドキュメントは自動的にダウンロードされません。ドキュメントは、要求されたときにのみダウンロードされます。NSFileManager提案どおりに使用すると、ファイルがローカルデバイスに存在するかどうかだけがわかります。ただし、ファイルはクラウドに存在し、まだローカルにダウンロードされていない可能性があります。使用すると、ドキュメントがクラウドにあり、実際にはまだダウンロードされていない場合でも、NSMetadataQueryドキュメントがどこかに存在するかどうかを確認できます。別のデバイスで作成されたドキュメントかどうかを確認できます。これは、ユーザーがアプリを削除して再インストールしたが、クラウドデータを削除しない場合も対象になります。ダウンロードされていなくても、クラウドデータが存在するかどうかがわかります。

使用しているのでUIManagedDocument、特定のダウンロード呼び出しを行う必要はありません。それを開くと、ダウンロード呼び出しが処理されます。

于 2013-02-06T17:30:26.847 に答える