2012-01-30 84 views
0

我有一个将数据加载到我的表视图的服务。当服务已加载数据我的数据加载到我的模型:数据加载到数组后,表不会更新条目

[self.model.entries removeAllObjects]; 
[self.model.entries addObjectsFromArray:objects]; 

现在我想知道,如果这两个呼叫“结合兼容”,使表视图会知道它必须更新它的数据,直接绑定到self.model.entries。我问这是因为服务完成后,表格不再询问我的委托人的tableviewcells的数量,所以它似乎绑定不踢in。

我想我可以在tableview上调用reloadData,但这会那么就不再符合“约束哲学”了吧?

请注意,如果模型类不存在,我的模型类会返回一个新的NSMutableArray。我不清楚这是否是使用绑定的正确方法。

回答

1

对于完全绑定的兼容性,您应该通过NSController进行绑定......在这种情况下,大概是NSArrayController。

通过直接绑定到模型,您打破了MVC模式,不,我不相信NSTableView会直接绑定到模型上。

绑定你的表视图NSArrayController的的arrangedObjects,例如,和使用NSArrayController的方法,如:

-add: 
-removeObjects: 
-insert: 

来管理内容。表视图自动接受这些更改。

+0

您能否简要解释为什么会打破MVC模式? – Besi 2012-01-31 00:27:51

+1

也许有些轻率,因为你省略了MVC的“C”部分。 ;-)这个想法是模型不应该知道关于UI的任何事情,反之亦然。例如,如果你从一个数组支持数据切换到支持字典,数据库或Web服务,你的UI不应该改变 - 只有控制器中的胶水。该框架试图推动你进入更好的架构,因此需要通过控制器进行绑定。 – 2012-01-31 01:01:09