Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 如何连接NSUserDefaults数组中NSDictionary键的表列_Cocoa_Interface Builder_Nsdictionary_Nstableview - Fatal编程技术网

Cocoa 如何连接NSUserDefaults数组中NSDictionary键的表列

Cocoa 如何连接NSUserDefaults数组中NSDictionary键的表列,cocoa,interface-builder,nsdictionary,nstableview,Cocoa,Interface Builder,Nsdictionary,Nstableview,因此,我有一个基于视图的tableView,它将字典的键和值作为列公开,绑定到NSDictionaryController(WeatherLocation),其内容对象来自应用程序项,绑定如下: 所有这些都很好,但是这个字典的键是有限的(7个值):cc,city,st,loc,lat,lon,zip,所以我想 强制用户从列表中选择-保留在用户默认首选项数组中 使用字典键验证(唯一性)以避免值重复 但我被困在如何将弹出按钮单元格连接到列值;到目前为止,对于键列的弹出按钮单元格,我有: 因此,

因此,我有一个基于视图的tableView,它将字典的键和值作为列公开,绑定到NSDictionaryController(WeatherLocation),其内容对象来自应用程序项,绑定如下:

所有这些都很好,但是这个字典的键是有限的(7个值):cc,city,st,loc,lat,lon,zip,所以我想

  • 强制用户从列表中选择-保留在用户默认首选项数组中
  • 使用字典键验证(唯一性)以避免值重复
  • 但我被困在如何将弹出按钮单元格连接到列值;到目前为止,对于键列的弹出按钮单元格,我有:

    因此,tableView的视图显示键列是默认值pref中的整个数组,而不仅仅是单个值:

    将解决方案发布在上;谢谢大家给我的指导

    列绑定,并且仅需要这些绑定


    此示例显示使用默认值存储所有信息、通过弹出窗口输入键值的字典以及验证键值/值对值的委托存根。喜欢。

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