4

Appleのコード例では、iCloudの変更を検出するためにNSMetadataQueryDidUpdateNotificationを監視することを提案していますが、これはiCloudトランザクションごとに複数回発生します。彼らのアプリは、NSMetadataQueryDidUpdateNotificationが起動するたびに、「fileListReceived」メッセージ内のファイルを処理します。

これは、多くのドキュメントを使用するアプリケーションにとって理想的なソリューションではありません。

voromaxは、ここで、NSMetadataItemの属性値を観察することがより良い解決策であることを示唆しています。

誰かがこれがどのように機能するかについて説明/表示/詳しく説明するか、代替ソリューションを提供できますか?

4

1 に答える 1

2

NSMetadataQueryは、iCloudファイルコンテナで表示または非表示(つまり、追加または削除)するファイルを監視するのに適しています。通知が頻繁に発生する可能性があるという点では正しいですが、アプリで通知が最適でないかどうかは、返されたデータをどのように処理するかによって異なります。この例では、リスト全体を毎回リロードしますが、頻繁に更新される可能性のある多くのドキュメントを処理する必要がある場合は、変更に対してのみ機能する、より洗練されたアプローチを考え出すことができます。

コンテナ内のドキュメントの(コンテンツに対する)変更を監視するには(たとえば、ドキュメントが開いていて、変更でUIを更新する場合)、メタデータクエリを、このコンテキストで関心のある各ドキュメントのUIDocumentStateChangedNotificationの監視と組み合わせる必要があります。 。ドキュメントが更新されたときに通知され、反応することができます-UIを更新するなど...

あなたがリンクした質問は、KVOを使用して、個別に返されたNSMetadataItemsのプロパティ、特にダウンロードステータスを追跡し、ドキュメントがiCloudからのダウンロード(またはアップロード)を完了した時期を正確に判断することについて話していると思います。これは、たとえばプログレスバーを表示する場合に役立ちます。これはUIDocumentStateChangedNotificationの良い代替ではありませんが、良い褒め言葉になる可能性があります。堅牢なUIDocument/iCloud実装を実際に実現するために、多くのアプリはこれらすべてのメソッドを組み合わせて、ユーザーに最高のエクスペリエンスを提供します。

お役に立てば幸いです。

于 2012-11-11T20:08:51.490 に答える