問題タブ [nspredicateeditor]
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.
swift - NSPredicateEditor NSPredicateEditorRowTemplates データを保持するにはどうすればよいですか
NSPredicatEditor
プロジェクトのセッションごとに情報を入力するのに苦労していますSwift
。
ガイダンスやサンプルをいただければ幸いです。
私がこれまでに得たもの。
- アクション シートに機能的に実装された述語エディター。
- NSArrayController にバインドされた述語は、CoreData テーブルにもバインドされています。
- CoreData テーブル属性に基づいて行テンプレートを生成する方法。
何が機能していません。
predicateditor
述語を行テンプレートに一致させることができないという取得エラーに バインドされた予測変数もawakefromnib
、これがチェックされているように見えますが、この時点で InterfaceBuilder から行テンプレートが初期化されていません (nil )。
私ができるようにしたいNSUSerDefaults
のは、アプリケーションが再起動されたときに、このエディターが最後に入力されたデータを持つように、述語エディターの内容を永続化することです。
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 文字列および/または述語エディター全体の自動ローカライズを無効にする方法はありますか?
xamarin - 新しい NSExpression を作成します
NSExpression
で使用する定数値を持つ を作成するにはどうすればよいですかPredicateEditor
。
例えば:
leftExpression は文字列「state」、rightExpression は文字列「Germany」である必要があります
私はもう試した:
しかし、これは機能しません。Programm はエラーなしで停止します!
cocoa - NSPredicateEditor で選択した行を強調表示する
のNSPredicateEditor
スーパークラスは、プロパティ (および対応するセッター)をNSRuleEditor
公開します。このプロパティにオブザーバーを追加すると、述語エディターの行がクリックされるたびに実際に変更されることが示されます。ただし、行が選択または選択解除されていることを視覚的に示すものはありません。selectedRowIndexes: IndexSet
selectRowIndexes(IndexSet, byExtendingSelection: Bool)
述語エディターで選択した行を視覚的に強調表示したいのですが、サブクラス化するビュー描画メソッドや、エディターの外観をカスタマイズするために実装するデリゲート メソッドがほとんどありません。ルール エディタの行が選択されていることをユーザーに伝える方法を提案できる人はいますか?