Cocoa 如何连接NSUserDefaults数组中NSDictionary键的表列
因此,我有一个基于视图的tableView,它将字典的键和值作为列公开,绑定到NSDictionaryController(WeatherLocation),其内容对象来自应用程序项,绑定如下: 所有这些都很好,但是这个字典的键是有限的(7个值):cc,city,st,loc,lat,lon,zip,所以我想Cocoa 如何连接NSUserDefaults数组中NSDictionary键的表列,cocoa,interface-builder,nsdictionary,nstableview,Cocoa,Interface Builder,Nsdictionary,Nstableview,因此,我有一个基于视图的tableView,它将字典的键和值作为列公开,绑定到NSDictionaryController(WeatherLocation),其内容对象来自应用程序项,绑定如下: 所有这些都很好,但是这个字典的键是有限的(7个值):cc,city,st,loc,lat,lon,zip,所以我想 强制用户从列表中选择-保留在用户默认首选项数组中 使用字典键验证(唯一性)以避免值重复 但我被困在如何将弹出按钮单元格连接到列值;到目前为止,对于键列的弹出按钮单元格,我有: 因此,
此示例显示使用默认值存储所有信息、通过弹出窗口输入键值的字典以及验证键值/值对值的委托存根。喜欢。基于视图的表格视图和弹出按钮单元格听起来不太合适。实际上我已经尝试了两种表格类型(视图、单元格)。理想情况下,我希望从用户默认设置中获取弹出菜单-语言区域设置,而不是IB中的,但两者都可以。这是如何连接列或单元格值的问题,这是我遇到的问题。如果使用tableView委托尝试重复条目,我将处理异常。我建议使用基于视图的表视图。用户首选项中的
weatherLocationKeys
是您期望的字符串数组吗?包含我正在尝试的模型。用户首选项是字典键的数组,但字典本身是应用程序对象的一部分;在这个示例弹出窗口中,我也将字典放入了用户首选项中。对于我来说,键列表是来自prefs中的数组还是弹出菜单单元格并不重要,我只需要一个有限的键集,并使用dictionary对象来保持唯一性。删除popupbuttoncell的所有绑定。选择键列,将内容值绑定到userdefaults的weatherLocationKeys
,并将所选值绑定到dictionarycontroller的Key
。注意:这是一个基于单元格的表视图。当我在基于视图的表视图中尝试此操作时,Xcode(ibtool)陷入循环并占用我所有的内存;它们在应用程序加载的用户首选项数组中保持独立。使用我发布的github示例,我将tableview更改为基于单元格的,然后将popupbutton单元格向上拖动到“Key”列的正下方——仍然有效。尝试选取已用于生成内置工作表警报的键-popover以提供有效值。