問題タブ [nstreecontroller]
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 - Cocoa - テーブル ビューでネストされた配列を表示する
「コンテンツ」と呼ばれる配列にバインドされたツリーコントローラーがあります。「コンテンツ」は、「車」と呼ばれるモデル オブジェクトの配列です。各「Car」には、「carName」という名前の NSString と「mostPopularColors」という名前の NSMutableArray が含まれています。「mostPopularColors」には、「最も人気」、「2 番目に人気」、「3 番目に人気」などのキーと、「赤」、「緑」、「青」などの値を持つ NSMutableDictionary オブジェクトが含まれます。
アウトライン ビューは、ツリー コントローラーに配置されたオブジェクトにバインドされ、すべての「Car」の「carName」を「content」に表示します。別のテーブル ビューでは、すべての「carName」が 1 つの列に一覧表示されます。これは、配列コントローラーをツリー コントローラー (コントローラー キー: selection、モデル キー パス: allChildLeafs) にバインドすることによって行われます。テーブルの列の値は、配列コントローラーの配置されたオブジェクト、モデル キー パス: carName にバインドされます。
テーブル ビューには、最も人気のある色と 2 番目に人気のある色をそれぞれリストする 2 つの列が必要です。したがって、最終的なテーブルには、すべての車の名前と各車の最も人気のある 2 つの色をリストする 3 つの列が必要です。
説明どおりに車の名前にアクセスできますが、色自体は配列にあるためアクセスできません。
2 番目のアレイ コントローラを作成して最初のアレイ コントローラにリンクしようとしましたが、動作しません。
最終的には、アウトライン ビューで 1 つまたは複数の車を選択し、すべての名前とそれぞれの上位 2 つの色をテーブル ビューで表示できるようにしたいと考えています。
objective-c - NSTreeNode mutableChildNodesが正常に機能していませんか?
なぜこれが機能しないのか、私は完全に困惑しています。新しいNSTreeNodeを子ノードの可変配列に挿入しようとしています。コードは次のとおりです。
実行すると、あらゆる種類のエラーが発生します。
- -[NSCFSet initWithObjects:count:]:オブジェクトにnilオブジェクトを挿入しようとします[0]
- -[NSTreeNode _tearDownObserving]:認識されないセレクターがインスタンス0x2000bff40に送信されました
- 重大なアプリケーションエラー。Core Data変更処理中に例外がキャッチされました:-[NSTreeNode _tearDownObserving]:認識されないセレクターがuserInfo(null)でインスタンス0x2000bff40に送信されました
エラーはKVOのものを扱っているようです。mutableChildNodesを使用してこのようなエラーが発生した人はいますか?どんな助けでも大歓迎です。
注:基盤となるNSTreeControllerは、管理対象オブジェクトコンテキストを介してコアデータにバインドされます。
objective-c - NSTreeController 新しく作成されたアイテムへのポインタ
NSTreeController add: または addChild: メソッドから新しく作成されたノードへのポインターを取得するための適切な回避策またはハックを知っている人はいますか?
cocoa - KVC Hillegass の方法を理解して再現し、コントローラーに/からオブジェクトを挿入/削除する
Aaron Hillegass のCocoa Programming for Mac OS Xでは、Raiseman アプリケーションが Interface Builder (IB) のボタンをNSArrayController
with send actionに接続します-remove:
。MyDocument クラスで、彼は 2 つの KVC メソッドを実装します。
このボタンを押すと、-removeObjectFromEmployeesAtIndex:
メソッドが呼び出され、現在選択されている Person (Model) オブジェクトが配列から削除されます。
remove:
IB で使用されるメソッドはどのようにして-removeObjectFromEmployeesAtIndex:
メソッドを呼び出しますか?- でこの効果を再現するにはどうすればよい
NSTreeController
ですか?
cocoa - CoreData、SourceList、NSTreeController
わかりました、これが私の質問です。
CoreData + Source List + NSTreeController を使用して、Finder (または必要に応じて iTunes) のソース リストに似たものを作成します。
私の問題は、ソース リストにあるものがすべて CoreData から来ているわけではないということです。たとえば、CoreData を使用して入力される「コア データからのデータ」というセクション (ルート) がありますが、実行時に作成される「偽の」セクション (つまり、「お気に入り」セクション) もいくつかあります。
このため、エンティティを使用して OutlineView と NSTreeController を CoreData に直接バインドすることは実現不可能であり、最初に CoreData からのデータと ad-メンバーの hoc クラス (Apple による「SourceView」の例のように)。これが最初の質問です: (1) これを行うのは正しいですか?
2 番目の質問は、この NSMutableArray に関するものです。この配列を使用することが解決策になる可能性があるとしましょう。どの方法で配列を埋めるのが正しいのか疑問に思っていました。「SourceView」の例では、中間配列は NSTreeController (insertObject:) を使用して実行時に取り込まれますが、別の解決策私が考えていたのは、NSMutableArray をサブクラス化し、配列の内容を直接変更することです。(2) このように MVC を壊していますか?
nstreecontroller - AlwaysUsesMultipleValuesMarker は NSTreeController で何をしますか?
Appleのドキュメントによると、
複数のオブジェクトが選択されている場合、それらが同じ値であっても、レシーバーが常に複数値マーカーを返すかどうかを設定します。
討論:
アプリケーションで複数の値の編集が許可されていない場合は、フラグを YES に設定するとパフォーマンスが向上します。デフォルトは NO です。
ただし、ドキュメントを読んでも、これが何を意味するのか理解できません。例を挙げて簡単に説明できる人はいますか?
macos - NSTreeController は、新しい/選択/編集可能なオブジェクトの問題を追加します
NSManagedObjectContext からデータを取得している NSTreeController をバックアップした NSOutlineView があり、新しいオブジェクトを挿入する以外はすべて完璧に機能します。
新しいオブジェクトを挿入し、すぐにそれにフォーカスして編集可能にしたい。
次の方法で新しい NSManagedObject を作成した場合:
すぐに挿入されますが、選択して取得できないようです。
今、私がそれを介して挿入すると
すぐに選択され、編集可能になります。
問題は、両方の方法を使用できず (二重エントリが表示される)、最初に #1 を使用しないと方法 #2 を使用できないことです。
理想的には、方法 2 を使用したいと思いますが、重複したエントリを作成することはありません。
では、Core Data によってバックアップされた新しいオブジェクトを挿入/追加するための推奨される方法は何ですか?