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

时间:2015-03-13 04:14:27

标签: macos core-data cocoa-bindings nsarraycontroller

全部,
我最终试图弄清楚这一点。我有一个NSViewController,它包含一个NSArrayController和一个表,其dataSource设置为视图控制器。 NSArrayController在IB中设置为包含Core Data实体对象。准备内容和自动重新排列内容设置为YES。 MOC绑定已设置。 filterPredicate和sortDescriptor都有绑定。加载我的NSViewController时,调用方法numberOfRowsInTableView:但我的NSArrayController不包含任何数据。显示/加载所有内容后,NSArrayController似乎包含数据(如果我添加另一个Entity对象,则显示所有对象)。我试过调用rearrangeObjects,但这似乎不起作用。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

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

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

当你再次调用tableView NumberOfRowsInTableView:的reloadData时,此时NSArrayController包含数据,因为它的fetch已经被执行。