我是Core Data的新手,我目前正在开发一个使用NSTableView
组织对象的小型(OSX)应用程序。我现在想要通过单击该目标行上的按钮来删除行/对象。
我通过调用[NSApp managedObjectContext]
来访问表控制器中的托管对象(仍然试图弄清楚依赖注入的事情),但我不能像以前那样轻松删除objectAtIndex:
数组(现在已被核心数据堆栈取代,对吧?)。
如何识别要删除的对象?因此,我怎样才能将它从堆栈中干净地移除?
这可能是一个非常基本的问题,但我找不到任何资源。绑定显然不起作用,因为在单击发生之前没有选择行。
非常感谢任何帮助!
答案 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绝对可以与控制器而不是视图进行交互。
对于核心数据,阵列控制器非常光滑,假设您必须以编程方式完成所有操作。