swift - 将 NSPopUpButton 绑定(bind)到核心数据会挂起 Xcode 构建

标签 swift core-data binding xcode6 nspopupbutton

我的环境:

  • Mac OS X v 10.10.4
  • 版本 6.4 (6E35b)

我的项目:

  • 使用 Swift 1.2 和 Storyboard 的 Mac 应用

一些背景知识:我得到了一个 NSTableView,其中的多个列全部连接到 NSArrayController 中,而 NSArrayController 又连接到核心数据(例如实体“Car”)。一切正常 - 我可以加载和编辑列值,并将更改保存到 sqlite。所有这些都是通过 Interface Builder 进行绑定(bind)来完成的。我现在想向该表添加一个新的“颜色”列,表示与另一个实体(例如实体“颜色”)的关系。每行都会有一个用于这个新列的 NSPopUpButton ;弹出按钮的值应该从链接到“Color”实体的第二个 NSArrayController 填充。因此,“颜色”是汽车和颜色之间的多对一关系(许多汽车可以引用给定的颜色),我希望弹出按钮中的值对应于颜色中的“名称”属性.

我做了什么:

  • 在 Storyboard中(在包含汽车表的 Controller 场景下),我添加了第二个 NSArrayController,“颜色数组 Controller ”:

    1) 在“属性检查器”下 -> 模式 = 实体名称,实体名称 = 颜色,选中“准备内容”复选框

    2) 在“绑定(bind)检查器”下 -> 参数 -> 托管对象上下文 -> 选中“绑定(bind)到” -> 选择“汽车 Controller ” -> 模型 key 路径 = 上下文

  • 在 Cars 表(NSTableCellView 下)中,添加了一个 NSPopUpButton。

此时,一切都构建并正常运行,除了表中的所有列都显示弹出按钮中的“Item 1”默认值(当我展开弹出按钮时,我还可以看到其他默认值)上)。

现在,我尝试了以下方法,但徒劳地尝试使用正确的值加载弹出窗口:

策略一:

使用 Interface Builder,选择 NSPopUpButton。在绑定(bind)检查器(值选择)下,选中“绑定(bind)到”并指定上面的颜色数组 Controller ; Controller 键->排列对象;模型键路径 -> 名称

策略2:

  • 为汽车 Controller 中的“颜色数组 Controller ”创建了一个 IBOutlet“colorsArray”;
  • 使用 Interface Builder 选择 NSPopUpButton。在绑定(bind)检查器(值选择)下,选中“绑定(bind)到”并指定汽车 Controller ;模型关键路径 -> colorArray.arrangedObjects

对于上述两种策略,每当我尝试运行(或只是构建)项目时,Xcode 都会卡在“编译 1 of 1 Storyboard 文件”处。事件监视器显示“ibtoold”进程稳定消耗所有可用内存(一旦我终止它,Xcode 就会报告我的构建失败)。

如果有人能够阐明我做错了什么,或者提出替代方案来实现所需的结果,我将不胜感激。

最佳答案

我刚刚遇到了同样的问题:一旦我将 NSPopupButtoncontent 绑定(bind)到 ArrayController >arrangedObjects Xcode 将永远编译 Storyboard。当我删除绑定(bind)时,它将照常编译:(

由于我的 NSPopupButton 位于表列内,因此我删除了数组 Controller ,现在将其 content 直接绑定(bind)到表列对象的属性值。

关于swift - 将 NSPopUpButton 绑定(bind)到核心数据会挂起 Xcode 构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32195038/

相关文章:

swift - 在 UITableViewCell 子类中获取 indexPath

iPhone - NSPredicate(添加更多过滤器)

jsf - 绑定(bind)属性导致 View 中发现重复的组件 ID

ios - ObjectBinding 和 EnvironmentObject 有什么区别?

swift - 我可以将多个 Playground 文件放入一个 Xcode 工作簿吗?

swift - 根据名称定位多个 Sprite ?

ios - 如何从 AVPlayer 中提取整个流标题?

ios - 如何在 Swift 中不使用 NSDictionary 读取 Plist?

ios - 使用两个独立的 View Controller 更新核心数据模型

objective-c - OS X (>=10.6) 上类似 Twitter 客户端的 NSCollectionView 实现?