問題タブ [nspredicateeditorrow]
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 - NSPredicateEditorRowTemplateとCoreData
CoreDataエンティティの述語エディターテンプレートを生成しようとしています。私のコードには次のものがあります:
テンプレート配列の内容を印刷すると、次のようになります。
CFArray 0x1002d7400 [0x7fff70ff5f20] {タイプ=不変、カウント= 2、値=(0:NSPredicateEditorRowTemplate 0x10025c090:[名前] [99、4、5、8、9] NSStringAttributeType 1:NSPredicateEditorRowTemplate 0x1002d2dc0:[年齢] [4、5、 0、2、1、3] NSInteger16AttributeType)}
このコードを実行すると、コンソールに次のように表示されます。
これを行うためのインターフェースは非常に単純に見えるので、私が間違っていることを理解できないようです。どんな助けでも大歓迎です!
編集
私の元々の問題は、テンプレートがLIKE演算子をサポートしていないときにLIKE演算子を使用していたことでした。ただし、複合述語をエディターに渡すときに同様の警告が表示される理由については混乱しています。
また
これらは両方とも、私の最初の問題と同様の警告を生成します。ただし、単一の述語を使用して複合語と述語を作成できるのは奇妙だと思いますが、事前に作成された複合語と述語をエディターに渡すことはできません。
objective-c - NSPredicateEditor の「-」ボタンをクリックした後、削除する述語エディター行を取得するにはどうすればよいですか?
カスタム行テンプレートを使用した NSPredicatedEditor があります。NSPredicateEditor で「-」をクリックした後にカスタム行テンプレートを削除する方法を教えてください。実際にパラメーターとしてインデックスを提供する以下のメソッドをオーバーライドしようとしましたが、サブ行 (ネストされた複合行テンプレート) に含まれている場合、正確なインデックスを返しません。削除されている間に削除する行テンプレートのインスタンスを探しています。
removeRowsAtIndexes:includeSubrows:
cocoa - 複数のローカライズされた左キー パスを同じ NSPredicateEditorRowTemplate にマージしますか?
アプリで Finder の NSPredicateEditor ベースのメタデータ検索を複製しようとしています。
私は Finder の正確な NSPredicateEditor を無料で入手したいと思っていますが、その質問に対するより良い答えを誰かが持っていない限り、Finder の検索をできる限り複製する必要があるようです。
Kind
オプションのミラーリングに取り組んでいるときに、問題が発生しています。まず、使用可能なすべてのオプションを含む Finder Spotlight 検索を保存しKind
ます。
Get Info
結果の保存された検索フォルダーにアクセスすると、クエリは次のようにリストされます。
私が見ている問題は、単一の「種類」のユーザー表示テキストに、選択された正しい値に基づいて結果の NSPredicate で使用される複数のキー パスが含まれていることです。
「種類」は、(少なくとも) kMDItemContentTypeTree
、_kMDItemGroupId
、またはを表すことができkMDItemKind
ます。
NSPredicateEditorRowTemplateを作成するとき、Left Expressions、Operators、Right Expressions の配列を渡します。次に、Left/Operator/Right のすべての可能な順列を含む行テンプレートが作成されます。
(注: Interface Builder ではなくプログラムでNSPredicateEditorRowTemplate
すべての sを作成しています)。
Finder は、3 つの左のキー パスと 12 の右の値のすべての可能な順列を作成していません。右側で選択された値に基づいて、特定の左側のキー パスを選択的に割り当てています。
ここにあるガイドに基づいて、NSRuleEditor
のプロパティを使用して行テンプレートをローカライズしています: http://funwithobjc.tumblr.com/post/1482915398/localizing-nspredicateeditorformattingDictionary
「Kind」の同じローカライズを、2 つの異なる の 2 つの異なるキー パス式に割り当てることができNSPredicateEditorRowTemplate
ます。
同じ左キー パス式を使用して "Kind" にローカライズされた 2 つの行テンプレートがある場合、次の "merge the templates" の引用は真であり、1 つの "Kind" のみがリストに表示されます。右側のポップアップは、2 つのテンプレートのすべての値の結合セットです。
実行時に、NSPredicateEditor はテンプレートをマージし、2 番目のポップアップに日付テンプレートのすべての演算子の結合が表示されます。http://www.cocoabuilder.com/archive/cocoa/282859-nspredicateeditorrowtemplate-and-dynamic-templateviews.html
ただし、両方とも「Kind」にローカライズされた 2 つの行テンプレートを作成し、異なる左キー パス式を使用すると、代わりに左式ポップアップに 2 つの「Kind」行が表示されます。テンプレートはマージされません。
Finder の動作を再現するにはどうすればよいですか? 異なるキー パス/式を表している場合でも、同じローカリゼーションを持っている場合は、左キー パスを何らかの方法でマージする必要があります。その結果、複数の左キー パスがそれぞれ独立した正しい値のセットを持つ単一の行テンプレートになります。
macos - NSPredicateEditor が一部の Expression 文字列を自動的にローカライズするのはなぜですか? 無効にする方法は?
一部の NSPredicateEditor
/NSPredicateEditorRowTemplate
値が OS X によって自動的にローカライズされていることがわかりました。
.equalTo
これは、演算子の文字列へのマッピングで簡単に確認できますis
。
しかし、UTI 文字列がその UTI の人間が読めるバージョンにマッピングされていることに気付きました。
以下、設定したの"public.image"
ですが と表示されてしまいます"image"
。
特定の有効な UTI のみがこの方法でマップされます。Operators と UTI 以外の他の形式に自動ローカライズされた文字列が与えられるかどうかはわかりません。
NSPredicateEditor と Row Templatesをローカライズしたいので、これは問題です。
述語をローカライズするプロセスには、キーをローカライズされた値に一致させることが含まれます。
問題は、キーの値がUI に表示される文字列と一致する必要があることです。行テンプレートの左右の式に最初に設定された文字列ではありません。
"public.image"
そのため、キーで使用してローカライズできません。UI は何らかの理由で既にこれを にローカライズしてい"image"
ます。行テンプレートをローカライズしたい場合は、"image"
代わりに文字列を使用する必要があります。そして、この文字列がどのように、またはなぜ選択されているのかわかりません"image"
。
テストによってこれらの文字列を特定し、式をローカライズされた文字列にマップするテーブルを作成できます。しかし、テストしていない文字列について心配する必要がないように、この自動ローカリゼーションを無効にするソリューションが必要です。
UTI が自動的にローカライズされるのはなぜですか? 他の値は同じ扱いを受けますか?
UTI 文字列および/または述語エディター全体の自動ローカライズを無効にする方法はありますか?