問題タブ [nsarraycontroller]
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.
objective-c - NSArrayController、カスタムソート
各列が NSArrayController の適切な値にバインドされた NSTableView があります。列の 1 つには、画像を表示する NSImageCell が含まれています。
この列で並べ替えたいのですが、明らかに画像のオブジェクト値で並べ替えるのは私が望んでいるものではありません。実際には他のフィールドの組み合わせでソートしていますが、これを設定する方法がわかりません。問題のフィールドの列ヘッダーをクリックすると、ソート矢印が表示されません。
NSArrayController に NSSortDescriptors を適用して他の列を並べ替えていますが、並べ替えると、すべての NSSortDescriptors がアクセスできるのはテーブル セルのオブジェクト値であることがわかります。
オブジェクト値がプロパティであるオブジェクトの比較メソッドで並べ替える必要があります。これは可能ですか?私はすでに NSArrayController をサブクラス化しており、どこかに良い賭けがあるように思えますが、ドキュメントには役立つものは何も見つかりません。
cocoa - バインディングを介して、テーブルビューの2つの行からそれぞれ2つのテキストフィールドに日付を表示する
1つの属性がNSDate型のtransactionDateであるtransactionという名前のクラスがあります。
NSArrayControllerを使用して、トランザクションのリストをテーブルビューに表示しています。
私の要件は-
「From」というラベルの付いたテキストフィールドの最初の行に日付を表示し、「To」というラベルの付いたテキストフィールドの最後の行に日付を表示したいと思います。
私の質問は-
IBでのバインディングを介してこれを達成できますか?はいの場合、どのように?
ありがとう、
ミラジ
objective-c - インターフェイスをブロックせずに NSTableView のデータをロードするにはどうすればよいですか?
配列コントローラー (辞書の配列を管理する) にバインドされた NSTableView を使用して、単純なインターフェイスを初期化しています。バックグラウンドで配列のコンテンツを読み込み (非常に時間のかかるプロセスです)、100 または 1000 要素ごとにテーブル ビューを更新したいと考えています。アイデアは、インターフェイスが利用可能で応答性が高いということです。後で更新/更新をトリガーする方法もわかりません。テーブルは空のままです。誰でもポインタを提供できますか?
私の現在のアプローチは次のとおりです。
データを直接ロードするだけで、バックグラウンドでそれを実行しようとしない場合、すべて正常に動作しますが、ほぼ 30 秒かかります。
cocoa - 簡単な拘束力のある質問
私はこのような単純なアプリケーションを試しています-
意見:
最初の列にエンティティ 1 の数、2 番目の列にエンティティ 2 の数を示すテーブル ビュー。ここで、各行は、特定の日付における異なるエンティティの数を指定します。
エンティティ 1 の合計数を 35 倍して表示するテキスト フィールド。
両方の列のエンティティ数の合計を示すテキスト フィールド。
例えば。
(エンティティ 1) (エンティティ 2)
<2> <3>
<4> <2>
<5> <7>
要件 1: pt で指定されたテキスト フィールド。2 が表示されます - 385 すなわち。(11 * 35)
要件 2: pt で指定されたテキスト フィールド。3 が表示されます - 23 つまり。(11 + 12)
モデル:
2 つのプロパティを持つオブジェクト:
int entity1Count
int entity2Count
テーブル ビューでデータを表示するために配列コントローラー オブジェクトを使用しています。
私の質問は -
IB でバインディングを介して要件を実装できますか? はいの場合、どのように?
ありがとう、
ミラージ
core-data - managedObjectContext で選択されたオブジェクト
私はエンティティを持つコアデータアプリを持っています
ホスト名 ユーザー名 パスワード
(すべて NSString) 属性用。
次に、コア データ モデル、アレイ コントローラー、テーブル ビューを追加ボタンと削除ボタンでリンクしました。
基本的に、この段階でコードを 0 行ほど書いただけで、アプリはうまく機能します。
(これは、Hillegass の Mac OS X 用 Cocoa プログラミングの第 11 章の単純なバージョンです)
問題は、tableView に表示されるように、選択されたエンティティ/オブジェクトを managedObjectContext または配列コントローラーから (プログラムで) 取得する方法です。
cocoa - 整理されたオブジェクト NSArrayController から Windows 管理共有を除外したい
NSArrayController にすべてを設定して、ファイルの所有者である presentedObject を、持っているテーブルビューのデータ ソースにします。
インターフェイス ビルダーのバインディング内で、フィルター述語を使用して、名前に $ が含まれる arraycontroller 内のアイテムを除外したいと思います。具体的には $ で終わるアイテムを除外したいと思います。収集している FTP 共有の配列。
フィルター述語を次のように設定しました: コントローラー キー: 選択 modelKeyPath : directorAndFiles
値 トランスフォーマー: うーん、わからない? 手伝ってくれますか
欲しかった: $ 文字を含むアイテムを削除します
ありがとう!
objective-c - NSTableColumn による手動バインド (NSArrayController なし)
テーブル ビューでバインディングを使用したいのですが、NSArrayController を使用していません。配列を NSTableColumn にバインドしようとしましたが (自分で並べ替え/検索を処理しています)、うまくいきません。NSArrayController にバインドされたときに NSTableView/NSTableColumn が発揮する魔法のようなものはありますか? さらに重要なことは、NSArrayController は NSTableView 以外に役立つのでしょうか?
cocoa-bindings - NSArraycontroller selectionIndexes バインディング
私は次の設定をしています:
左のビューに NSCollectionView を表示し、右のビューに detailView を表示する splitView を持つウィンドウ。両方のビューは別々の xib に設定されています。さらに、NSMutableDictionaries (moviesForChoice) の変更可能な配列を管理する (NSArrayController クラスの) Datacontroller があります。dataController は、アプリケーション デリゲートとして設定されます。配列内の映画オブジェクトには、(名前、プロット、ジャンルなど) のようなプロパティがあります。
ここまでは順調ですね...
NScollectionview の xib で、Application.delegate.moviesForChoice を介して NSArraycontroller コンテンツ プロパティをデータ コントローラーにバインドしました。collectionView は、arraycontroller.arrrangedObjects および arraycontroller.selectionIndexes にアクセスします。これは正常に機能し、コンテンツが表示され、コレクションビューで選択が正常に機能します(私のコレクションビューアイテムは選択色をレンダリングします)
detailView の xib で、選択したオブジェクトの情報を collectionview に表示したいと考えています。したがって、配列コントローラーも xib に追加し、コンテンツ配列を Application.delegate.moviesForChoice にバインドし、ビューの NSTextfields をたとえば arraycontroller.selection.name にバインドしました。
ここに私の問題があります: 2 つの xib でウィンドウを開くたびに、コレクションビューには選択可能なすべてのムービーが正しく表示され、詳細ビューにはコレクションビューの最初のオブジェクトの情報が表示されます。コレクション内の別の映画をクリックするたびに、解像度を表示します。item は選択色をレンダリングしますが、detailView は更新されません。
私の理解では、DataController は selectionIndexes の更新について通知されないため、detailView で更新をトリガーできないということです。間違っていたら訂正...
これを解決するために、collectionView xib の arraycontroller の selectionIndexes プロパティを Application.delegate.moviesForChoice.selecionIndexes にバインドしようとしましたが、これは次のエラーで失敗しました: addObserver:forKeyPath:options:context:] is not supported. キーパス: selectionIndexes
これは、datacontroller が配列 moviesForChoice に対して KVO に準拠していないことを意味していると想像できますが、そのために次のメソッドを実装しました。
どこが間違っているのですか?selectionIndexes に正しくバインドするにはどうすればよいですか?
助けていただければ幸いです。M
cocoa - コンテンツとしてセット演算子を使用して配列コントローラーの「削除」をバインドする方法
「プログラム」が「ToDo」と 1 対多の関係にあり、ウィンドウが次のように設定されているデータ モデルがあります。
NSArrayController: プログラム。モック内のプログラム エンティティ、コンテンツを準備、特別なバインドなし NSTableView: 単一列、値はプログラムにバインド、controllerKey=arrangedObjects、パス=名前
NSArrayController: ToDo。moc の Todo エンティティ。コンテンツを準備し、ContentArray はパス "@unionOfSets.Todos" のプログラムの選択に
バインドされます。(および他の列のDueDateなど)
これは機能しています。選択した各プログラムについて、すべての ToDo の結合が他のテーブルに表示されます。
私の問題は、ボタンを ToDo 削除アクションにバインドすると、押すと次のエラーが表示されることです:エンティティ プログラムは、キー "@unionOfSets" のキー値コーディングに準拠していません。
選択した ToDo アイテムが ToDo コントローラーから削除されることを期待していましたが、これを実現するにはどうすればよいですか?
前もって感謝します
- デイブ
objective-c - NSTableView のドラッグ アンド ドロップが機能しない
NSTableView に非常に基本的なドラッグ アンド ドロップを設定しようとしています。テーブル ビューには、(カスタム セルを含む) 1 つの列があります。列は NSArrayController にバインドされ、配列コントローラーのコンテンツ配列はコントローラー オブジェクトの NSArray にバインドされます。データはテーブルに正常に表示されます。dataSource
テーブル ビューのアウトレットとアウトレットをコントローラー オブジェクトに接続し、delegate
これらのメソッドを実装しました。
ドラッグタイプも登録しました-awakeFromNib
:
問題は、 -tableView:writeRowsWithIndexes:toPasteboard: メソッドが呼び出されないことです。私はたくさんの例を見てきましたが、間違っていることは何もわかりません。カスタムセルを使用していることが問題でしょうか? この機能を有効にするために、セルのサブクラスでオーバーライドする必要があるものはありますか?
編集:確認しました。カスタム セルを通常の NSTextFieldCell に切り替えると、ドラッグが機能するようになりました。では、カスタム セルでドラッグ アンド ドロップを機能させるにはどうすればよいでしょうか。