核心数据未加载到 NSArrayController IB 绑定中

Core Data not loaded into NSArrayController IB binding

全部,
我无能为力试图弄清楚这一点。我有一个 NSViewController,其中包含一个 NSArrayController 和一个 table,其数据源设置为视图控制器。 NSArrayController 在 IB 中设置为包含核心数据实体对象。准备内容和自动重新排列内容设置为是。 MOC 绑定已设置。有 filterPredicate 和 sortDescriptor 的绑定。当我的 NSViewController 被加载时,方法 numberOfRowsInTableView: 被调用,但我的 NSArrayController 不包含任何数据。在一切都displayed/loaded之后,NSArrayController 似乎包含数据(如果我添加另一个Entity 对象,所有对象都会显示)。我试过调用 rearrangeObjects,但这似乎不起作用。有什么想法吗?

当您借助绑定在 IB 中设置托管对象上下文时,NSArrayController's 提取将作为延迟操作在其托管对象上下文设置(通过 nib 加载)后执行。因此,这发生在 awakeFromNib:windowControllerDidLoadNib: 之后。

因此,当加载视图控制器时,在设置 NSArrayController's 托管对象上下文 属性 之前调用方法 NumberOfRowsInTableView:。因此,此时 NSArrayControoler returns 零。

当你为你的 tableView 重新加载数据时 NumberOfRowsInTableView: 被再次调用,此时 NSArrayController 包含数据,因为它的提取已经被执行。