3

从我可以拼凑起来的点点滴滴看来,这个答案将是“不”,所以我将广泛地解释在我试图敲定的(可能的)情况下我想要实现的目标一个螺丝。

我的应用程序中有一个要读入的有效文件扩展名列表,我正在通过一个目录对其进行递归。我希望这是一个偏好,所以我有以下内容:

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

我将 NSTableView 绑定到 NSArrayController 绑定到共享用户默认控制器...

拥有用户可自定义的有效扩展列表是完全错误的方法吗?我是否误解了 NSUserDefaults 的作用?

4

1 回答 1

3

标题中提出的问题的答案是“是”......但不幸的是,这对您没有帮助,因为实际 NSUserDefaults 后备存储中数据结构的可变性不受您传递的对象的可变性控制在与 registerDefaults:.

对于本身就是结构的首选项值,为了更改它们,您必须读取旧结构,制作您需要修改的任何部分的可变副本,更改它,然后将该结构设置为新值。不幸的是,这不太适合绑定,因此您需要一个粘合层,将绑定数组中的更改反映到首选项中。

于 2009-05-04T16:23:12.610 回答