2011-06-27 19 views
1

Core Dataについて学ぶためのサンプルアプリケーションがあります。このアプリケーションでは、エンティティ「Friend」と「City」からなるモデルを作成しました。アプリケーションでは、NSTableViewで友人とどの都市にいるのかを示します。このテーブルビューでは、都市の列をNSComboBoxCellにして都市リストを表示したいと考えています。私は問題を解決しました:

コンボボックスから都市を選択すると、アプリケーションは選択した都市名の値を受け取り、友人が現在いる都市名に適用します。代わりに、私は実際に都市の名前ではなく都市の名前を変更するアプリケーションを使用したいと思います。これはちょっと疑問なので、ここに例があります:NSComboBoxCell、NSTableView、およびCore Dataを使用してリレーションシップを設定する方法

 
Andy  Asheville 
Francois Montreal 
Jeff  Asheville 
私はアシュビルからモントリオールへのアンディのための都市を変更しNSComboBoxCellを使用する場合は

は、アプリケーションが実際にモントリオール市アッシュビルの名前を変更し、その結果は次のようになります。

 
Andy  Montreal 
Francois Montreal 
Jeff  Montreal 

まだ二つの異なるがありますアプリケーションの都市ではなく、現在はどちらもMontrealという名前を持っています。

これは私のバインディングを設定する方法を与えられた私には意味があります。 Model Key Pathを "city.name"に設定し、コントローラキーをfriendsのリストを含むarrangedObjectsに設定することで、cityテーブルの列の値をバインドしました。もちろん、セルの値が変更されると、city.nameが変更されます。だから、私の質問は、市の名前の代わりに都市が変わるようにこれを行う適切な方法になるのですか?

答えて

3

NSComboBoxの目的は、「NSTextFieldの場合と同様にテキストを直接入力することも、表示された項目のリストから選択することもできます」です。 (Apple Cocoa Refから取ったもの)。

だから、コンボボックスは栄光のNSTextFieldです。予想される動作は、NSPopupButtonに沿ったものになります。

NSComboBoxのバインディングは、現在のCityの名前の値を変更しますが、オブジェクトの関係を変更しないため、関係によって表される現在の都市の名前が変更されます(次に、同じシティエンティティを指している友人)。

NSPopupButtonの使用可能なバインディングを見ると、その違いがわかります。おそらくNSPopupButton(Cell)を使ってCitiesをFriendsに割り当てたいと思うでしょう。あなたの都市名を管理するためのNSTableViewベースのエディタがあります。これは本当に2つの異なるタスクです。

+0

すばらしい、ありがとう!私はちょうどそれを行い、物事は素晴らしい仕事。ユーザーがマウスで都市を選択するのではなく、市の名前を入力することができればうれしいでしょう。システムはオートコンプリートのようなものを使うことができます。 – Jason

+0

さて、この時点で、元の質問と設計上の問題から離れていますが、NSComboBoxに戻って[完了関数]を調べることができます(http://developer.apple.com/library/mac/#ドキュメンテーション/ Cocoa/Reference/ApplicationKit/Classes/NSComboBoxCell_Class/Reference/Reference.html%23 // apple_ref/doc/uid/20000098-BAJEAFCB)、これにはコードが必要です。また興味深い議論[ここ](http://lists.apple.com/archives/cocoa-dev/2006/Jun/msg00459.html)。 – burton

関連する問題