【问题标题】:NSTable CoreData and selection不稳定的核心数据和选择
【发布时间】:2012-04-06 11:46:01
【问题描述】:

我有一个非常简单的应用程序。它是一个基于非文档的 CoreData 应用程序。 nib 包含一个 NSArrayController 和一个带有一列 NSTable 的窗口。表格下方是三个按钮,添加、删除和获取。在按钮下方,我有一个 NSTextField 和第四个标记为 Save 的按钮。

我的模型有两个实体,部门一个员工。部门有一个属性,名称。我目前没有使用 Employee。

在 AppDelegate.h 中我添加了以下代码:

@interface HMGAppDelegate : NSObject <NSApplicationDelegate>
{
    NSArrayController *_departments;
}

@property (retain) IBOutlet NSArrayController *departments;

在 AppDelegate.m 中

 - (void) awakeFromNib
{
    [[self departments] fetch:nil];
}

按钮必须在 NSArrayController 上添加:remove: 和 fetch:。 保存按钮绑定保存:在AppDelegate上

NSTextField绑定到nib中NSArrayController的实例,ControllerKey为selection,Model Key Path为:name

当我运行应用程序时,我可以创建新实体并更改实体的值。这一切都很好。

不起作用的是表格中的选择。更改表中选定的行不会导致在 NSArrayController 中选择该行的值。我知道我可以在表格上放置一个代表 catch SelectionDidChange 并在 ArrayController 上显式设置选择,但我想知道是否有更简单的方法可以做到这一点。

我看到过其他示例,其中有两个表视图,表示一对多关系。第一个表中的选择会导致第二个表显示相关实体。 (例如选择一个部门会显示该部门的员工)。在我正在查看的示例中,似乎没有 NSTableDelegate。

我错过了什么? NSTableView 如何将它的选择传回给 NSArrayController?

【问题讨论】:

    标签: cocoa core-data nstableview


    【解决方案1】:

    你是如何设置绑定的?如果你将NSTableView的内容绑定到NSArrayController,你还必须绑定selection & sortDescriptions

    作为替代方案,您可以将表格列的 Value 绑定到 Array Controller.arrangedObjects 并且选择应该可以工作。

    【讨论】:

    • 即使问题很老,我也发现您的回答非常有用。现在有了基于视图的表格视图,选择不再起作用了。有了你的回答我解决了!谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-08
    相关资源
    最近更新 更多