Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.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
Objective c NSTableView没有';t增加表中元素的数量?_Objective C_Cocoa_Nstableview - Fatal编程技术网

Objective c NSTableView没有';t增加表中元素的数量?

Objective c NSTableView没有';t增加表中元素的数量?,objective-c,cocoa,nstableview,Objective C,Cocoa,Nstableview,我有一个NSTableView,它使用NIB的控制器对象作为数据源显示。我实现了NSTableView非正式协议 此NSTableView从核心数据获取其值。我启动应用程序,加载XML中的所有值,然后显示它们 我的问题是,NSTableView似乎没有向表的末尾添加任何新行。如果我在永久存储器中没有值的情况下启动应用程序并添加另一个值(添加值的工作方式与我看到它们被保存到XML的方式相同),那么表视图将忽略新值 如果我添加了一个我知道会在表末尾的值(内容按字母顺序排列),我将看不到新值 如果我和

我有一个NSTableView,它使用NIB的控制器对象作为数据源显示。我实现了NSTableView非正式协议

此NSTableView从核心数据获取其值。我启动应用程序,加载XML中的所有值,然后显示它们

我的问题是,NSTableView似乎没有向表的末尾添加任何新行。如果我在永久存储器中没有值的情况下启动应用程序并添加另一个值(添加值的工作方式与我看到它们被保存到XML的方式相同),那么表视图将忽略新值

如果我添加了一个我知道会在表末尾的值(内容按字母顺序排列),我将看不到新值

如果我和一个我知道的值没有到达表的末尾,那么该值将被添加,我将在表上看到它,但表上的最后一个值将被推出并消失

我注意到-(int)numberOfRowsInTableView:(NSTableView*)tv仅在应用程序启动时调用,而不是在我执行[tableView reloadData]时调用。触发此事件的原因是什么?在调用tableView上的reloadData之前,我尝试手动启动它,但似乎不起作用

你知道是什么导致了这一切吗


有人遇到过这样的事情吗?有什么线索吗?

Alex的评论让我回顾了代码,特别是Interface Builder中的绑定。事实证明,我已经设置了表和控制器对象之间的绑定,并实现了NSTableDataSource


我已经删除了所有绑定,只实现了协议。

您的问题还不清楚:您是使用绑定还是NSTableDataSource协议来填充NSTableView?你必须选择其中一个。如果您使用的是核心数据,那么应该使用绑定。我使用的是NSTableDataSource协议。我不使用绑定,因为在屏幕上显示数据之前我需要做一些魔术。魔术是什么?我猜它更多的是NSValueTransformer子类或NSFormatter双胞胎中的一个,但我不能在不知道您在做什么的情况下确定。我支持Peter的评论。根据您正在执行的“魔术”类型,它应该发生在模型的某个地方,或者发生在NSValueTransformer/NSFormatter类中。表数据源不适合放任何花哨的东西。我建议换一种方式。核心数据和绑定设计为协同工作。