問題タブ [nsmetadataquery]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
cocoa - NSMetadataQuery は、データが正常に同期されているにもかかわらず、ドキュメントがないと言っていますか?
OS X アプリを iCloud ドキュメントへの変更から自動的に更新しようとしていますが、通知を受け取るのに非常に苦労しています。具体的には、私のすべての結果をリストするコードが与えられましたがNSMetadataQuery
(テストと確認を行うことができるように)、0 の結果が返されます。これは、データが OS X アプリから正常にアップロードされ、起動時に再度正常にダウンロードされているため、ユビキタス コンテナーに明らかに何かが存在するという事実にもかかわらずです。これが私が今持っているものです。
CloudDocument.h:
CloudDocument.m:
私が見ている結果はqueryDidUpdate:
、起動時に 2 ~ 3 回呼び出されることですNSMetadataQueryDidFinishGatheringNotification
。つまり、「resultCount」変数は常に 0 であるため、クラウド ドキュメントを頻繁に編集しても、呼び出されることはなく、まったく呼び出されることもlogAllCloudStorageKeysForMetadataItem
ありません。NSMetadataQueryDidUpdateNotification
ファイルが同期されていることが明らかであるにもかかわらず、検索が 0 の結果を返す理由について誰かアドバイスをいただけますか? NSMetadataQueryDidUpdateNotification
または、さらに良いことに、コード全体のどこが間違っているのか、ファイルに編集があったときに軌道に乗って通知するために何ができるかを確認できますか? 次の方法を使用して、ファイルを保存しています。
ここで、「kAllNotes」=「メモ」。
よろしくお願いします。
編集: 正常に同期していると言っても、NSMetadataQuery のために同期していないことに注意してください。CloudDocument をロードするcloudDoc = [[CloudDocument alloc]initWithContentsOfURL:[self notesURL] ofType:NSPlainTextDocumentType error:nil];
行が別の場所にあるので、そこにドキュメントがあり、アプリの iOS バージョンによって変更されていることはわかっていますが、今マスターしようとしている NSMetadataQuery は、そこにあるだけです。で動作しますがNSMetadataQueryDidUpdateNotification
、どれも正しく機能していないようです。
また、私は間違いなく初心者なので、提案を行う際のコードスニペットと例は非常に高く評価されています!
ios - ファイルが iCloud フォルダに存在するかどうかを確認するにはどうすればよいですか?
iCloud にファイルを保存する iOS アプリがあります。アプリを起動すると、以前のデバイスが既にファイルをアップロードしているかどうかを確認したいと考えています。最初のデバイスを起動すると、iCloud にファイルが追加されます (Mac の Mobile Documents フォルダにファイルが表示されます)。次に、2 番目のデバイスでアプリを起動し、次の NSMetadataQuery を使用してファイルがアップロードされているかどうかを確認しようとしましたが、0 の結果が返されました。そのクエリを実行し続けると、約 8 ~ 10 秒後に結果が返されます。
通知を受け取ると、クエリの resultCount は 0 です
ファイルがダウンロードされていなくても、iCloud にファイルが存在する場合、NSMetadataQuery は resultCount を返すべきではありませんか? オーバーを試行して 15 ~ 30 秒後にタイムアウトする以外に、ファイルが存在するかどうかをテストする方法はありますか?
ios - UIManagedDocument、iCloud、およびドキュメントの種類
UIManagedDocument (つまり、Core Data) ドキュメント形式を使用するアプリがあります。人生を面白く保つために、私はそれをiCloudで動作させようとしています. 次の2つのオプションのいずれかを取得できるようになりました。
- それは機能しますが、iCloud 設定では、ドキュメントはすべて
DocumentMetadata.plist
、言うまでもなく、かなり混乱しているように見えます - 既存のドキュメントは iCloud 設定で正しく表示されますが、新しいドキュメントを作成できません
明らかに、これらのどちらも受け入れられません (ただし、明らかに 2 番目が最悪です)。
シナリオ 1 では、ドキュメント タイプまたはエクスポートされた UTI タイプがなくNSMetadataQuery
、を検索するように設定しましたDocumentMetadata.plist
(これはファイルであり、クエリはファイルと見なされるものしか検索できないため)。
シナリオ 2 では、ドキュメント タイプとエクスポートされた UTI タイプの両方が定義されています。この場合NSMetadataQuery
、ドキュメント タイプのファイル拡張子が検索されます。この場合の奇妙な点は、saveToURL:completionHandler:
メソッドが完了ブロックを呼び出さないことです。
(最初のケースではそうです。)
私の推測ではNSMetadataQuery
、ドキュメントの「根性」ファイルがいつ作成されるかを確認するのと同じメカニズムを使用しているのですが、私のドキュメントはcom.apple.package
内部を見ることができず、そうではないと考えているためです。終了した。
私は何が欠けていますか?管理されたドキュメントを iCloud のユーザーに表示される部分に置くことは想定されていませんか?
ios - iCloud - NSMetadataQuery が NSMetadataItemFSCreationDateKey でソートされない
NSMetadataItemFSCreationDateKey
iCloud から配列内のファイルのリストを取得しています。そのファイルをまたはのいずれかで並べ替えますNSMetadataItemFSContentChangeDateKey
。しかし、与えられた通りに戻っていませんNSSortDescriptor
。
これが私のコードです。何か不足している場合や追加する必要がある場合は、提案してください。
ありがとう。
cocoa - NSMetadataQuery は、Lion、Mountain Lion、または Mavericks でファイルを見つけられません
バニラ プロジェクトを作成し、これをアプリ デリゲートの実装にする場合:
NSMetadataQuery で "最近" (Lion 以降) 導入された次の非常に異常な動作を確認できるはずです。明らかに機能しなくなりました。
アプリをそのまま実行すると、次のようなログが記録"searchProgressed 1204"
されます。これは、クエリが結果を見つけたことを意味します。しかし、他の述語をコメントアウトしてから実行すると、何も見つかりません。
ワイルドカードまたはプレースホルダーのさまざまな形式を含め、その行の多くのバリエーションを試しました。プレースホルダーを他の形式%K
に変更し、LIKE[c]
もちろん 、 、 などを使用NSMetadataItemFSNameKey
しNSMetadataItemURLKey
ましkMDItemContentType
た。 上記の 1 つの最も単純なケース以外は何も機能しません。
NSMetadataQuery について大きな何かが欠けているに違いありません。NSMetadataQuery は、以前に広く使用して大成功を収めました。
icloud - NSMetadataQueryDidUpdateNotification を呼び出せません
を使用して icloud にアップロードしたファイルの割合を追跡したいのですが、うまくいきNSMetadataQuery
ませんでした。
これは私のコードです:
}
liveUpdate:note
メソッドは呼び出されませんでした。誰かがこのコードを修正する方法を教えてくれますか? ありがとうございました
コードを編集しました...
これは私の新しいコードです
まだ liveupdate メソッドを呼び出すことはできません。私のコードの問題は何ですか?
icloud - iCloudのremoveItemを即座に
NSFM のメソッド removeItemAtURL を使用して iCloud のアイテムを削除していますが、その直後に NSMetaDataQuery を実行しても、このアイテムを 3 秒間表示できます。これを修正する方法はありますか?アイテムをiCloudにアップロードしようとしていますが、そのような名前のファイルが存在する場合は、それを置き換える必要があり、NSMetaDataItemのuploadingPercentKeyを追跡してユーザーに表示する必要があります.削除後 3 秒間。
ios - NSMetaDataQuery を作成し、バックグラウンド スレッドで結果を取得するにはどうすればよいですか?
デフォルトNSMetaDataQuery
では、結果通知はメイン スレッドで受信されます。query.startQuery
メインスレッドで呼び出す必要があるようですが[query.setOperationQueue:]
、結果通知が送信されるキューを設定するために使用できます。
理想的には、バックグラウンド スレッドがこれらの結果を受信して処理することを望み、見つかったファイルに応じて、変数を設定するか、通知をメイン スレッドに投稿します。
私が理解していないのは、操作キューを作成する方法と、このキューで通知を処理する方法です。必要なクラスのサンプルコードと、それらを作成する場所と方法の詳細は素晴らしいでしょう。Apple のドキュメントを読みましたが、通知を処理できるキューを作成する方法がわかりません。
ありがとう
uitableview - ソートが必要な非同期コンテンツを UITableView に正しく入力する方法
iCloudに保存されているさまざまなサイズ(> 100)のファイルがたくさんあります。NSMetadataQuery
これらのファイルを返す があります。それらはNSMetadataQuery
オブジェクトからランダムな順序でアプリに報告されます。
それらを開いていくつかの文字列を抽出し、それらを並べ替えてUITableView
.
私は2つのアプローチを試しました.A)各ファイルをロードし、ファイル情報の配列をソートreloadData
し、UITableView
毎回呼び出す. B)すべてのファイルがロードされるのを待ってから、「完全な」配列をソートしてから1回呼び出しますreloadData
。
オプション B の方が明らかに優れていますが、基本的には、ユーザーが結果を確認するのに同じくらい時間がかかります。これをどのように行うのが最善ですか?
UITableView
表示するデータを別のファイル (PLIST など)に抽出して、実際のデータがバックグラウンドで読み込まれている間にすばやく読み込んで表示できるようにする必要がありますか? または、配列を追跡reloadRowsAtIndexPaths:
し、ソートのために後で変更される各行を呼び出すことにより、基本的に実装 A を拡張する必要がありますか?
このシナリオのベスト プラクティスは何ですか?
ありがとう
c++ - NSMetaDataQuery: 更新または収集の通知が届かない
NSMetaDataQuery を使用して、バンドル識別子に基づいてアプリケーション パスを取得するコードを試しています。Apple 開発サイトにあるサンプル コードに従っていました: 静的スポットライト検索の実装。
私はそれのために次のファイルを書きました
定義は次のとおりです。
GetAppPAth
でメソッドを呼び出していmain
ます。必要なヘッダー ファイルを追加しました。コードはコンパイルおよび実行されますが、2 つのオブザーバーに通知がありません。2 つのメソッドqueryDidUpdate
&にブレークポイントを設定しましたinitalGatherComplete
。しかし、彼らは決して打たれることはありません。私のメインコードが検索の完了を待っていなかったことが失敗の原因だと思いました。しかし、メインで待機しても機能しませんでした。次の質問のコードも試してみました。NSMetadataQuery をよく理解していません
が、無限while
ループで終了しました。