2009-07-29 48 views
0

OK、私は本当にこの質問をして馬鹿だと感じていますが、それ以上の自分のための答えを理解する。私の謝罪を事前に...Cocoa:アプリケーションの設定に格納されているNSStringの配列へのバインド

私はしばらくの間バインディングで遊んでいて、それらを愛しています。 Objective-C 2.0に組み込まれたKVO/KVCの規約により、アプリケーションの信頼性や柔軟性などを向上させながら、アプリケーションを大幅に削減することが可能になりました。これは、少なくとも私がバインディングを適度に快適にしている一般に。つまり、私の問題は次のとおりです。

私は好みのコントローラを使って編集可能なキーワードセットを保存したいアプリケーションがあります。簡単だよね?残念ながら、私の人生のために、私はそれを行う方法を理解することはできません。私は、配列コントローラを設定し、共有の設定オブジェクトを指し、配列のキーパスを与えます。問題は、配列に格納されているオブジェクトがNSStringであり、 "stringValue/setStringValue"メソッドがないために、この種の操作でNSStringがKVCに準拠する方法がわかりません。それらがなければ、私はNSTableViewでどのキーパスを使用するのですか?私はそのリストの操作を容易にするように設定しましたか?

また、共有設定オブジェクトは自分のものではないため、編集されていない/新しくインストールされた状態を表すために新しい配列を設定する方法についてはわかりません。 (デフォルトとして登録することは私のためには機能していないようです)

質問をより簡潔に再掲するには:テーブルビューをNSStringの配列にバインドするにはどうしたらいいですか?好み?

あなたが提供できる指針やアドバイスは非常に高く評価されます。私がこれから得ようとしている頭痛は、私のより良いものを得ることを始めています。 :)

答えて

1

あなたはしていません。それぞれ少なくとも1つのプロパティ(文字列のプロパティ)を持つモデルオブジェクトの配列を保持し、配列のコントローラを介してテーブル列をこの配列にバインドします。モデルのキーパスは文字列プロパティのものに設定されます。

あなたのアプリは単に文字列のリストエディタではないと仮定すると、おそらくこのモデルクラスに移動できる他のものがあります。あなたはそうするべきです。

+0

私は引き続き結論していますが、何らかの理由で実際にそれを信じることができませんでした。説明をありがとうございます。それは、アプリケーションの設定に行く限り、私はそれを/からNSDataに変換するバリュートランスを介して行う必要がありますか?また、配列の初期値を設定する最も良い方法は何でしょうか? また、よろしくお願い致します。 – Chronor

+0

通常、NSUserDefaultsControllerを使用して、ビューや他のコントローラをユーザーのデフォルトにバインドします。そのクラスには初期値を扱うメソッドもあります。 –

+0

Peterに感謝します。これは非常に役に立ちました。私はちょうど同じことをしていました - NSSTrayのNSArrayをComboBoxにバインドして、私はキーパスが何であるか疑問に思っていました。今私はすべての弦を新しいクラスに入れ、それは完全に動作します。 – TalkingCode

0

私はこの質問がかなり古くなっていることは知っていますが、私は同様の問題があり、このページに着いた。私は私のソリューションに貢献したいと思っていました。 私が必要とするのは大きな文字列ではありません。実際、私のニーズに合わせてテーブルビューは非常に醜いものでした。私は別のコントロール、NSTokenFieldを思い出しました。それは、ボックスの外の文字列の配列にバインドし、短い文字列の小さなリストのためにさらによく見えます:)

関連する問題