NSTableView& CoreData:在单击的行中删除对象

时间:2014-04-22 21:17:16

标签: macos cocoa core-data nstableview

我是Core Data的新手,我目前正在开发一个使用NSTableView组织对象的小型(OSX)应用程序。我现在想要通过单击该目标行上的按钮来删除行/对象。

我通过调用[NSApp managedObjectContext]来访问表控制器中的托管对象(仍然试图弄清楚依赖注入的事情),但我不能像以前那样轻松删除objectAtIndex:数组(现在已被核心数据堆栈取代,对吧?)。

如何识别要删除的对象?因此,我怎样才能将它从堆栈中干净地移除?

这可能是一个非常基本的问题,但我找不到任何资源。绑定显然不起作用,因为在单击发生之前没有选择行。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

绑定可行,因为您可以使用按钮的IBAction查询父{NSTableCellView'的objectValue。一旦你有了objectValue,就可以调用绑定的arrayController来删除对象,然后单元格/行就会消失。

因此,如果你有一个带有IBAction删除按钮的tableCellView,在该IBAction中,你可以获得发件人的超级视图,确保它是NSTableCellView,获取objectValue,并调用{ {1}}

正如它在NSTableCellView类引用中所说的那样:

  

当使用绑定时,objectValue由表自动设置,或者是NSTableViewDataSource协议方法tableView返回的对象:objectValueForTableColumn:row:。

这实际上是一个在cocoa中有视图的典型模式。 [myArrayController removeObject:...]或经常objectValue是视图中引用它们所代表的数据模型对象的属性,因此如果您在IBAction上有representedObject的视图指针,则可以获取相关数据模型对象。如果您正在使用绑定和控制器,则可以让控制器删除该对象。

使用绑定,您将经常创建需要附加IBActions的按钮,而不是某些直接绑定。但是那些IBActions绝对可以与控制器而不是视图进行交互。

对于核心数据,阵列控制器非常光滑,假设您必须以编程方式完成所有操作。