3

私がこすり合わせることができる断片から、これに対する答えは「いいえ」になるように思われるので、私が打ち込もうとしている(おそらく)場合に私が達成しようとしていることを大まかに説明しますネジ。

私のアプリにあるのは、読み込むことができる有効なファイル拡張子のリストです。これは、ディレクトリを介して繰り返し使用されます。これを好みにしたいので、次のようにします。

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

そして、NSTableViewをSharedUserDefaultsコントローラーにバインドされているNSArrayControllerにバインドしています...

これは、ユーザーがカスタマイズ可能な有効な拡張機能のリストを作成するための完全に間違ったアプローチですか?NSUserDefaultsの役割を誤解しましたか?

4

1 に答える 1

3

タイトルで提起された質問に対する答えは「はい」です...しかし、残念ながら、実際のNSUserDefaultsバッキングストアのデータ構造の可変性は、渡すオブジェクトの可変性によって制御されないため、役に立ちません。 registerDefaultsを使用して:。

それ自体が構造であるプリファレンス値の場合、それらを変更するには、古い構造を読み取り、変更する必要のある部分の変更可能なコピーを作成し、それを変更してから、その構造を新しい値として設定する必要があります。残念ながら、これはバインディングには適していません。そのため、バインドされた配列の変更を設定にミラーリングする接着剤レイヤーが必要になります。

于 2009-05-04T16:23:12.610 に答える