从我可以凑到的点点滴滴看来,这个问题的答案将是“不”,所以我将广泛地解释我正在尝试实现的(可能的)我正在尝试的案例锤击螺钉。
我的应用程序中有一个要读入的有效文件扩展名列表,我正在通过目录进行递归。我希望这是一个偏好,所以我有以下内容:
NSMutableDictionary *dic = [NSMutableDictionary dictionary];
[dic setObject:[NSMutableArray arrayWithObjects:@"pdf", @"rtf", @"txt", nil] forKey:@"validExtensions"];
[[NSUserDefaults standardUserDefaults] registerDefaults:dic];
我正在将NSTableView绑定到绑定到共享用户默认控制器的NSArrayController ...
拥有用户可自定义的有效扩展名列表这是完全错误的方法吗?我误解了NSUserDefaults的角色吗?
答案 0 :(得分:3)
标题中提出的问题的答案是“是”......但不幸的是,这对您没有帮助,因为实际NSUserDefaults后备存储中的数据结构的可变性不受可变性的控制。使用registerDefaults传递的对象:。
对于本身就是结构的首选项值,为了更改它们,您必须读取旧结构,制作需要修改的任何部分的可变副本,更改它,然后将该结构设置为新值。不幸的是,它不太适合绑定,所以你需要一个胶合层来将绑定数组中的变化镜像到prefs中。