Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.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获取数据?_Objective C_Cocoa_Nstableview - Fatal编程技术网

Objective c 如何从NSTableView获取数据?

Objective c 如何从NSTableView获取数据?,objective-c,cocoa,nstableview,Objective C,Cocoa,Nstableview,我有一个NSTableView,有两列,还有一个数据源,用数据填充它。那部分有效 如何从NSTableView中获取数据(NSString格式)?我可以获取所选行,但NSTableView似乎没有访问数据的方法 从我的数据源获取数据似乎会返回无用的数据(类型id和NSLog()和NSRunAlertPanel()都声称数据不是NSString类型 从NSTableView获取数据的最简单方法是什么 更新: 从我的数据源获取数据失败的原因与返回的NSString是tableView()方法中NSA

我有一个
NSTableView
,有两列,还有一个数据源,用数据填充它。那部分有效

如何从
NSTableView
中获取数据
(NSString
格式)?我可以获取所选行,但
NSTableView
似乎没有访问数据的方法

从我的数据源获取数据似乎会返回无用的数据(类型id和
NSLog()
NSRunAlertPanel()
都声称数据不是
NSString
类型

NSTableView
获取数据的最简单方法是什么

更新:

从我的数据源获取数据失败的原因与返回的
NSString
tableView()
方法中
NSArray
的一部分有关

我的输入文件包含为表视图中的列拆分的行。
NSTableView
获取正确的数据,但当我自己调用
tableView()
方法时,我遇到了一个EXC\u BAD\u访问错误,我认为这与内存管理有关

另一个更新:


这不是内存管理。这是因为我的应用程序无法识别它想要的
NSTableColumn
。我编写了第二种手动访问数据的方法,该方法使用int作为列而不是
NSTableColumn
,并且有效。

使用表(视图)违反了MVC范式作为存储数据(模型)的地方。您应该能够以与表视图相同的方式从数据源获取值;
tableView:objectValueForTableColumn:row:
的代码如何获取数据


如果您的表是可编辑的,您将从表视图调用
tableView:setObjectValue:forTableColumn:row:
,以允许您适当地修改数据源。

My data source从文件读取数据。但它为我提供数据所用的参数之一是NSTableColumn?哪一个?此外,它提供给我的数据也会出现不是NSString,但我不知道为什么。列有一个名称和一个标记,您可以检查。表不应该给您任何数据…您都忽略了我的第一句话。我使用了NSTableView来显示数据。我的问题是让数据源给我与NSTableView相同的数据。当我尝试时使用tableView方法不起作用,我认为会有一种更简单的方法。没有。听起来你的解决方案可能是解决更大设计问题的良方。我强烈建议在你的总体设计和目标上发布一些相关代码和几句话。作为一名八年的可可老手,我可以告诉你一些非常有趣的事情根据你的问题的性质和你找到的解决方案。不是耍花招,只是“哇,听起来不对。”:-)为什么?我正在从数据源对象获取数据。一个有两个类的程序怎么会有设计问题(不包括单独充当主窗口委托的类)?问题是我没有意识到我需要从控件中获取NSTableColumn,以便获得与控件相同的数据。我假设NSTableView使用NSTableColumns而不是ints作为列,因为列可以重新排列。在苏联(以及世界其他地区),
NSTableView
向您询问数据!是的,dreamlax,我知道。这就是为什么我说显示数据不是问题。问题是,您不应该从
NSTableView
访问数据。您需要做的是将文件加载到某种抽象数据模型中,让tableview数据源方法和程序的其余部分访问此模型中的数据。数据不在表视图中。当表格想要显示单元格时,它会询问数据源应该在那里显示什么。一旦它在屏幕上实际绘制了文本,表视图[除非进行任何优化]就会忘记它刚才使用的数据。你真的需要重新学习MVC模式。如果无法访问用于填充表视图的相同数据,则应用程序中存在严重的设计问题。