問題タブ [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.

0 投票する
2 に答える
1140 参照

objective-c - NSMetaDataQuery、setSearchScopeパスを再帰的に設定しますか?

Objective-Cでは、特定のユーザーのDocumentsフォルダーを検索するためのクエリのNSMetaDataQueryとを設定しています。setSearchScope:検索は機能しますが、ディレクトリツリーを下に戻ることはなく、Documentsフォルダを検索するだけです。
私はワイルドカードを試しましたが、喜びはありません。

これが基本的に私が試みたものであり、Documentsディレクトリの下を検索しないことを除いて機能します。

0 投票する
4 に答える
3636 参照

iphone - NSMetadataQuery が収集を終了しない (通知なし)

アプリのバックアップマネージャーを作成しています(iCloud経由)。私はいくつかのテストを行い、基本は機能しました。しかし、数日後には止まりました。NSMetadataQueryバックアップファイルが存在するかどうかを検索するために使用しています。私のバックアップファイルの名前は、たとえばBackup29112011154133.xml、数字がバックアップの日付を表す場所です (形式はddMMyyyyHHmmss)。私はそれをチェックします-viewDidAppear

問題は、- (void)queryDidFinishGathering:(NSNotification *)notif決して実行されないことです。そこにブレークポイントと NSLogs イオンを配置しましたが、何も起こりませんでした。

「クエリが収集を開始しました」や「クエリプロセス」など、他の通知も確認しようとしました。「クエリが開始されました」通知のみが投稿されます。

また、iCloud が登録された AppID と権利ファイルが添付されています。

何が起こっているのか、私を助けてくれますか? 多分私は何かを逃しましたか?

0 投票する
0 に答える
363 参照

cocoa - このコードによって NSMetadataQuery がクラッシュするのはなぜですか?

非常に単純な Xcode プロジェクトを取得しました。次のコンテンツを持つ単一のファイル アプリ デリゲートがあります。

インターフェイス ビルダーには、コンテンツ配列がテスト コントローラーのquery.resultsキーパスにバインドされている単一の配列コントローラーがあります。値が文字列にバインドされている NSSearchField もありtextます。検索フィールドに 1 文字入力した瞬間に、プログラム全体がクラッシュしEXC_BAD_ACCESSます。これを絞り込んで、self.query.predicate内部-setText関数を設定すると、すべてが正常に機能するように見えることがわかりました。self.query.predicateまた、設定を GCD ブロック内にラップすることもできます。問題は、NSMetadataQueryKVO 通知内から の述語を変更すると、プログラムがクラッシュするのはなぜですか? (すべてがメインスレッドから呼び出されることを確認しました)

テスト プロジェクトを github にアップしているので、簡単にクローンを作成して問題を確認できます。

https://github.com/tonyxiao/NSMetadataQueryCrash

0 投票する
2 に答える
1371 参照

ios - カスタムファイルパッケージタイプを無視するNSMetadataQuery

sを使用UIManagedDocumentしてiCloudのファイルを管理しています。NSMetadataQueryそのように設定した後:

奇妙な問題が発生しています。ドキュメントにファイル拡張子(たとえば@"NewDocument2")やのようなパブリック拡張子を付けずに名前を.txt付けると、メタデータクエリがDocumentMetadata.plistファイルを正しく検出します。ただし、カスタムファイル拡張子を使用すると、クエリで何も検出されません...クエリの開始時や新しいドキュメントの追加時ではありません。

クエリはおそらくカスタムファイル拡張子を持つ私のドキュメントを見ていて、それが実際にはディレクトリ(とにかくファイルパッケージ)であることを認識していないように思われるので、DocumentMetadata.plistファイルを見つけるために内部を調べません。ただし、アプリのでカスタムUTIを宣言しましたinfo.plist

おそらく私は自分のUTIを間違って宣言しましたか?Appleのガイドライン( iOSおよびUniform Type Identifiersのドキュメントベースのアプリプログラミングガイドの概要)に従って作成しましたが、何かが間違っているようです。


編集:の「エクスポートされたUTI」の下でinfo.plist、私のタイプは「com.apple.package」に準拠するように設定されています。


編集: 私はまだこの問題に苦労しています。私は今のところファイル拡張子を使わないことでそれを回避しています。

カスタムファイル拡張子を使用する場合、iCloudメタデータクエリの結果を処理しており、DocumentMetadata.plistファイルは間違いなくファイルパッケージ内にありますが、メタデータクエリはそれを認識できません。クエリ結果を列挙すると、以下がログに出力されます。

(「CoreDataLogs」ディレクトリにも多数のファイルがありますが、簡潔にするためにここでは示しませんでした)。

この問題は、ファイルパッケージUTIを誤って作成したことに関係しているとしか思えません。他の誰かがiCloudでカスタムファイルパッケージをうまく使用しましたか?これはバグですか?

0 投票する
2 に答える
549 参照

ipad - iOS:一部のiOS4デバイスで「シンボルが見つかりません」エラーが発生しましたが、すべてではありません

ユーザーのクラッシュログに次のメッセージが表示されます。

Dyldエラーメッセージ:シンボルが見つかりません:_OBJC_CLASS _ $ _ NSMetadataQuery

したがって、解決策は、Foundationフレームワークを「オプション」にする必要があることを理解しています。しかし、私にとって奇妙なのは、このクラッシュは一部のiOS4デバイスでのみ発生し、他のデバイスでは発生せず、4.3シミュレーターでもクラッシュしないことです。特にiPad(iOS4を実行している)でのみ発生しますが、それでも一部のiPadでのみ発生します。誰かがそれがなぜかもしれないのか説明できますか?

フレームワークのリンクに関するバグの場合、すべてのiOS4デバイス(または少なくともすべてのiPad)でクラッシュするはずですよね?

0 投票する
1 に答える
231 参照

macos - iCloud: OS X のクラウドに存在する txt ファイルの配列を取得する

Apple が推奨する NSMetadataQuery を使用して、アプリの iCloud フォルダーにある txt ファイルの配列を取得しようとしています。

残念ながら、 queryDidFinishGathering: は呼び出されません。私は何を間違っていますか?

ありがとう!

0 投票する
2 に答える
1862 参照

objective-c - 単一ファイルのメタデータへのアクセス

MacOS で単一ファイルのメタデータにプログラムでアクセスする方法はありますか?

Appleが提供していることは知っていますが、特定のフォルダでいくつかのパラメータに一致するファイルを検索NSMetadataQueryすることしかできないようです。実際には、一致するすべてのファイルを検索するのではなく、特定のファイルが一致するかどうかを確認したいと思います。

クエリの結果を分析し、ファイルがその中にあるかどうかを確認する方法または唯一の解決策はありますか?

0 投票する
1 に答える
319 参照

ios5 - 2つのiCloudデバイスはNSMetaDataQueryで異なる結果を取得します

私はiCloudを使用して、単純なUIDocumentクラスで小さなオーディオファイルを保存しています。iPhone4sおよびiPadでのiOS5.1の実行1.iPadはiCloudコンテナと正しく通信しています。ドキュメントを作成すると、iPhoneとiPadの両方で[設定]->[iCloud]->[ストレージとバックアップ]->[ストレージの管理]->[MyAppName]からドキュメントがiCloudストアに表示されます。ただし、iPhoneは独自の別のストアに接続しているようです。そこで作成したファイルは、どちらのデバイスの設定にも表示されませんが、どこかのコンテナに移動しているように見えます。NSMetaDataQueryを実行しているときにそれらを見ることができます(しかし、実際のiCloudコンテナからのドキュメントは見えません)。

問題の始まり:iCloudのエンタイトルメントとコンテナ識別子を最初に作成したとき、「com」を省略しました。ストア名のプレフィックス。これは、私がAppleにアプリのアップデートを送信するまでは問題なく機能し、Appleは無効なiCloudコンテナ識別子を理由にアップロードをすぐに拒否しました。識別子を変更した後、問題が発生しました。両方のデバイスでアプリを削除してリロードしましたが、iPhoneはまだ見えないiCloudコンテナのように見えるものを使用してスタックしています。

電話を実際のiCloudコンテナと同期させるのを手伝ってください。ありがとう!

0 投票する
2 に答える
297 参照

cocoa-touch - [NSMetadataQuery クラス] のチェックが iOS 4.2.1 でクラッシュするのはなぜですか?

クラスを使用する前に存在するかどうかを確認するために、Marco Arment によって説明されているこのアプローチを使用しようとしています。適切な設定があれば、クラスは適切なときに自動的に弱リンクされます。Marco が説明しているように、「安全にサブクラス化したり、必要なものへのポインターを使用したりできます (使用できないときにインスタンス化しないように注意している限り)」。

私のアプリは iOS 5 で正常に動作します。リンクに記載されている条件に従いました。

  • ベース SDK は最新の iOS (iOS 5.1) です。
  • 展開ターゲットは iOS 4.0
  • C/C++/Objective-C のコンパイラは Apple LLVM コンパイラ 3.1 (LLVM GCC 4.2 も試しました)

NSMetadataQuery を参照するときはいつでも、クラスが最初に存在することを確認しています。

このすべてにもかかわらず、iOS 4.2.1 を搭載した iPod touch でアプリを実行しようとすると、起動時にアプリがすぐにクラッシュします。

アプリが正常に動作するすべてのコードをコメントアウトしようとしました。NSMetadataQuery への単一の参照を追加するとすぐに、クラッシュします。私もこれを試しました:

その行を含めるだけで、NSMetadataQuery への他の参照がないだけで、アプリがクラッシュします。さらに奇妙なことに、他の iOS 5 クラスをチェックしても問題は発生しません。

期待どおり、それはうまくいきます。

クラスが存在することを確認するために醜いものを使用して問題を回避することができましたNSClassFromString()が、他のアプローチが機能しない理由を知りたいです。

0 投票する
1 に答える
817 参照

icloud - NSMetadataQueryに保存したドキュメントのフォルダをパッケージとして表示させるにはどうすればよいですか?

ローカルとiCloudの両方でドキュメントを保存およびロードするアプリを書いています。ローカルでは問題なく動作していますが、iCloudに問題があります。

ドキュメントはパッケージとして保存されます。UIDocumentは、画像ファイル、サムネイルファイル、および情報plistを含むNSFileWrapperの読み取りと書き込みを行います。ドキュメントをiCloudに保存してから、「ストレージの管理」の下にあるファイルを見ると、パッケージではなく個々のファイルが表示されます。さらに重要なことに、NSMetadataQueryを使用してファイルを検索すると、パッケージではなく、個々のファイルごとにNSMetadataItemが返されます。その結果、私のアプリはロードするパッケージがあることに気づかず、iCloudはかなり役に立たない。

ドキュメントタイプを設定してUTIを正しくエクスポートすると、パッケージが適切に処理されると思いました。そうでしたか?もしそうなら、パッケージとしてドキュメントタイプを設定するためのチェックリストは何ですか?私は持っています:

  • ドキュメントタイプを追加しました
  • LSTypeIsPackageをYESに設定します(文字列YESとbool YESを試しました)
  • CFBundleTypeExtensionsを1つの文字列を含む配列に設定します:ファイルサフィックス
  • LSHandlerRankをOwnerに設定します
  • 同じ識別子でUTIをエクスポートしました
  • com.apple.packageに準拠するように設定します
  • キーpublic.filename-extensionの配列を含むUITypeTagSpecificationディクショナリを追加しました。この配列には、ファイルサフィックスという1つの文字列が含まれています。

また、エクスポートされたものと一致するように、一致するインポートされたUTIを追加しようとしましたが、うまくいきませんでした。

私は何を取りこぼしたか?

更新:この質問のOPは、私が望む動作を確認していることに気付きました(彼はそれを望んでいませんが)ので、それは可能であるに違いありません。