2009-05-04 3 views
3

これは、私が一緒にこすりつけることができるので、この回答は「いいえ」であると思われるので、私がしようとしている(可能性の高い)ケースで達成しようとしていることを広く説明します。ねじでハンマー。編集可能なNSTableViewをNSMutableArrayにフックさせるために、CocoaのBindingsを使用することはできますか?

私のアプリには有効なファイル拡張子のリストがあります。このファイル拡張子は、ディレクトリを介して再帰しています。

は...

NSMutableDictionary *dic = [NSMutableDictionary dictionary]; 
[dic setObject:[NSMutableArray arrayWithObjects:@"pdf", @"rtf", @"txt", nil] forKey:@"validExtensions"]; 
[[NSUserDefaults standardUserDefaults] registerDefaults:dic]; 

と私は共有ユーザデフォルトコントローラにバインドされているNSArrayControllerはにNSTableViewを結合しています:私は、これは好みになりたいので、私は次のことを持っていますこれは、ユーザーがカスタマイズ可能な有効な拡張機能のリストを持つことに対する完全な誤ったアプローチですか?私はNSUserDefaultsの役割を誤解していますか?

答えて

3

タイトルの質問に対する回答は「はい」ですが、実際のNSUserDefaultsバッキングストア内のデータ構造の変更可能性は、 registerDefaultsで渡すオブジェクト:

それ自体の構造体である設定値を変更するには、古い構造体を読み込み、変更する必要のある部分の変更可能なコピーを作成して変更し、その構造体を新しい値として設定します。残念ながら、これはバインディングにはあまり適していないため、バインドされた配列の変更をプレビューに反映させるグルー層が必要になります。

+0

ああ、もちろん。私は配列自体を変更することはできませんが、配列全体を-setObject:forKey:で置き換えることができます。 – Drarok

関連する問題