CocoaのBindingsを使用して、編集可能なNSTableViewをNSMutableArrayに接続することは可能ですか?
-
03-07-2019 - |
質問
私が一緒にこすり取ることができる断片から、この答えは「いいえ」になると思われるので、私が(おそらく)私が達成しようとしていることで私が達成しようとしていることを広く説明しますネジを打ち込もうとしています。
アプリにあるのは、読み込むための有効なファイル拡張子のリストです。これは、ディレクトリを再帰処理しています。これを好みにしたいので、次のものがあります:
NSMutableDictionary *dic = [NSMutableDictionary dictionary];
[dic setObject:[NSMutableArray arrayWithObjects:@"pdf", @"rtf", @"txt", nil] forKey:@"validExtensions"];
[[NSUserDefaults standardUserDefaults] registerDefaults:dic];
そしてNSTableViewをNSArrayControllerにバインドしています。NSArrayControllerは共有ユーザーデフォルトコントローラにバインドされています...
これは、ユーザーがカスタマイズ可能な有効な拡張子のリストを作成するための完全に間違ったアプローチですか? NSUserDefaultsの役割を誤解していませんか?
解決
タイトルで提起された質問への答えは「はい」です...しかし、残念ながら、実際のNSUserDefaultsバッキングストア内のデータ構造の可変性は、 registerDefaults:で渡すオブジェクト。
それ自体が構造である設定値については、それらを変更するには、古い構造を読み取り、変更する必要がある部分の変更可能なコピーを作成し、それを変更して、その構造を新しい値として設定する必要があります。残念ながら、これはバインディングに適していないため、バインドされた配列の変更を設定に反映する接着層が必要です。
所属していません StackOverflow