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

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

cocoa - 対多キーの述語行テンプレートを自動的に生成しますか?

私の Core Data マネージド オブジェクト モデルには、baz という名前のエンティティ Baz との対多関係 (対多逆数を持つ) を持つエンティティ Foo があります。Baz には「tag」という名前の文字列プロパティがあります。[NSPredicateRowEditorTemplate templatesWithAttributeKeyPaths:[NSArray arrayWithObject:@"baz.tag"] inEntityDescription:FooDescription]NSPredicateEditor の行エディターを作成するために使用すると、結果には (予想どおり) 次のような行テンプレートが含まれます

[ポップアップ: baz.tag] [ポップアップ: 含む|である|ではない|...] [テキストフィールド]

ポップアップから「含む」を選択すると、述語を含むクエリが期待どおりに機能します。他のポップアップ (「is」など) を選択すると、「to-many key not allowed here」というエラーが表示されます。行エディターを手動で使用できます[NSPredicateRowEditorTemplate templatesWithAttributeKeyPaths:inEntityDescription:]か、または手動で作成する必要がありますか?

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

cocoa - 自動生成された述語行テンプレートの NSDatePicker の変更

によって返されるプロパティの行テンプレートを変更するNSDatePickerElementFlagsにはどうすればよいですか? 時間:分と日付を表示したいと思います。NSDatePickerNSDate[NSPredicateRowEditorTemplate templatesWithAttributeKeyPaths:inEntityDescription:]NSDatePicker

更新 cocoa-dev リストから収集した回答を以下に追加しました。

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

objective-c - NSPredicateEditor を使用して NSPredicate を編集する

NSPredicateEditor (NSRuleEditor のサブクラス) を使用して、NSPredicate を簡単に作成できます。私が知りたいのはこれです:

既存の NSPredicate (エディターによって作成されたもの) を取得し、エディターに再読み込みして変更できるようにするにはどうすればよいですか?

編集: setObjectValue: を使用するという @John の提案を試しましたが、うまくいきませんでした。私のセットアップをもう少し説明しましょう:

私はドキュメントベースのココア アプリを持っており、ドキュメント ウィンドウには NSPredicateEditor しかありません。dataOfType:error:メソッドには、次のものがあります。

readFromData:ofType:error:メソッドには、次のものがあります。

述語が正しくアーカイブおよびアンアーカイブされることを確認しましたが、保存された述語を開いた後、述語が predicateEditor に読み込まれません。(はい、predicateEditor は IBOutlet として接続されています)

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

cocoa - NSPredicateEditor、検索語のない行を無視しますか?

私は経験の浅い Cocoa プログラマーであり、私の質問がドキュメントで何らかの形で回答されていて、単にそれを見逃していた場合、または NSPredicateEditor の動作について理解していないことがあった場合は、お詫び申し上げます。ただし、ドキュメントを検索してグーグルで検索しようとしましたが、ほとんど効果がありませんでした。したがって、私はあなたに質問をします。

NSPredicateEditor を使用して Core Data ベースのテーブル ビューをフィルタリングしようとしています。フィルタリングは、NSCompoundPredicate を作成することにより、さまざまな基準に基づいて行をフィルタリングするという点でうまく機能します。ただし、述語エディターの行の検索フィールドにテキストがない場合、返される NSPredicate は次のようなものになります。

...これは Core Data レコードのどれとも一致しません - 私が望むものではありません。その行の検索フィールドが空白の場合、基本的に、データ セットをフィルター処理したくありません。

私の質問は、述語のこれらの部分を無視するための最も簡単で最良の解決策は何ですか? 私の最初のアイデアは、 NSPredicateEditor の値を行ごとに解析し(NSPredicate *)predicateForRow:(NSInteger)row、述語を自分で再構築して、一致しようとしている行を無視すること""でしたが、それは不必要に面倒に思えます。最終的な NSCompoundPredicate を分解し- (NSArray *)subpredicatesてそのように編集することも、おそらく私のやり方が間違っているように思えます。これを行うよりエレガントな方法はありますか?

*明確にするために、現在NSPredicateEditorに保存されている最初の述語を実際に編集するのではなく、テーブルビューのコントローラーに渡す述語のコピーを編集することを考えています。

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

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演算子を使用していたことでした。ただし、複合述語をエディターに渡すときに同様の警告が表示される理由については混乱しています。

また

これらは両方とも、私の最初の問題と同様の警告を生成します。ただし、単一の述語を使用して複合語と述語を作成できるのは奇妙だと思いますが、事前に作成された複合語と述語をエディターに渡すことはできません。

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

objective-c - NSPredicateEditor / NSRuleEditorの背景を交互の行に設定するにはどうすればよいですか?

一部のアプリが述語エディターで交互の行の背景を使用しているのを見てきましたが、それらがどのようにそれを行うのか理解できません。

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

objective-c - 日付比較用のNSPredicateEditorRowTemplate

を作成NSPredicateEditorしていますが、高度な日付比較を実行できるようにしたいと考えています。

を使用してを構築できることはわかっていますが、構築NSPredicateEditorRowTemplateしたい述語はそれよりもはるかに高度である必要があります。rightExpressionTypeNSDateAttributeType

たとえば、次のような基本的な比較が必要です。

  • dateKeypath < aDate
  • dateKeypath <= aDate
  • dateKeypath = aDate
  • dateKeypath != aDate
  • dateKeypath > aDate
  • dateKeypath >= aDate

これらの基本的な比較は非常に簡単に実行でき、私はこれらを機能させています。ただし、次のような比較も行う必要があります。

  • dateKeypath isInTheLast n days(または数週間、数か月、数年)
  • dateKeypath isNotInTheLast n days(または数週間、数か月、数年)
  • dateKeypath between aDate and anotherDate

どうすればこの種の比較を行うことができますか?カスタムを作成する必要があることは理解していますが、NSPredicateEditorRowTemplateこのようなことを実現する方法についての明確なドキュメントは見つかりませんでした。

EDIT ボーナスポイントは、これらの比較を完全な日時(年-月-日-時-分-秒)の比較(NSDateAttributeType年-月-日の粒度のみ)にする方法を知るためにも使用できます。

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

cocoa - CoreData モデルに格納された FetchRequests による変数置換

私は常に NSFetchRequests を完全にコード内で作成してきました。ここで、フェッチ リクエストを作成してモデルに格納するための Xcode GUI を見ています。

Xcode ドキュメントの例に従っています。モデルにフェッチ リクエストを追加しました。モデリング GUI で作成された述語は次のとおりです。

次に、次の 2 行でそのリクエストを取得します。

結果の NSFetchRequest の NSLog はこれを出力します:

.. これは、格納された FetchRequest が返される前に変数が置換されていないことを示します。

では、Xcode Data Modeling Fetch Request Predicate Builder GUI に入力されたテキストが、実行時に NSFetchRequest:fetchRequestFromTemplateWithName:substitutionVariables: によって置換されるように指定するにはどうすればよいでしょうか?

ありがとうございました!

ウッディ

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

cocoa - NSPredicateEditor が表示されない

私は本当に奇妙な問題を抱えています。IB を使用して NSPredicateEditor をインターフェイスに配置しようとしていますが、アプリをビルドすると、空の灰色の四角形として表示されます。これは、デフォルトのテンプレートを変更しないことを含め、デフォルトに何の変更も適用しないことです。何が起こっている可能性がありますか?

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

objective-c - NSPredicateEditor クエリが機能しない

NSPredicateEditor に問題があります。辞書の配列をフィルタリングするために使用したいと思います。

NSArray events = {(シュタット=>ベルリン), (シュタット=>ミュンヘン), nil }

次のコードが機能しています。

NSLog の結果: Stadt LIKE "Berlin"

NSPredicateEditor から述語を取得すると、同じ NSLog 結果が得られますが、結果配列 (イベント) は空です!

コード:

ありがとう、アンドレアス