问题标签 [nsarraycontroller]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
530 浏览

objective-c - NSArrayController,自定义排序

我有一个 NSTableView,每列都绑定到 NSArrayController 中的适当值。其中一列包含一个 NSImageCell,显示图像。

我想按此列排序,但显然按图像的对象值排序不是我想要的。我实际上是按其他字段的组合排序的,但我不知道如何设置它。当我单击相关字段的列标题时,不会出现排序箭头。

我将 NSSortDescriptors 应用于 NSArrayController 以对其他列进行排序,但是在排序时,似乎所有 NSSortDescriptors 都可以访问表格单元格的对象值。

我需要通过对象值是其属性的对象的比较方法进行排序。这可能吗?我已经对 NSArrayController 进行了子类化,似乎在某个地方会有一个不错的选择,但我在文档中找不到任何有帮助的东西。

0 投票
2 回答
158 浏览

cocoa - 通过绑定显示表格视图中两行的日期,分别在两个文本字段中

我有一个名为事务的类,其中一个属性是 NSDate 类型的事务日期。

我正在使用 NSArrayController 在表视图中显示事务列表。

我的要求是——

我想在标记为“从”的文本字段中的第一行显示日期,在标记为“到”的文本字段的最后一行显示日期。

我的问题是——

我可以通过在 IB 中的绑定来实现这一点吗?如果是,那怎么办?

谢谢,

米拉杰

0 投票
2 回答
1652 浏览

objective-c - 如何在不阻塞接口的情况下为 NSTableView 加载数据?

我正在初始化一个简单的接口,其中一个 NSTableView 绑定到一个数组控制器(它管理一个字典数组)。我想在后台加载数组的内容(这是一个非常耗时的过程),每 100 或 1000 个元素更新一次表格视图。这个想法是界面可用且响应迅速。我不知道之后如何触发更新/刷新。桌子仍然是空的。任何人都可以提供指点吗?

我目前的做法是:

如果我只是直接加载数据,而不是在后台尝试这样做,一切正常,但需要将近 30 秒。

0 投票
1 回答
78 浏览

cocoa - 简单的绑定问题

我正在尝试一个像这样的简单应用程序-

看法:

  1. 表格视图显示第一列中实体 1 的计数和第二列中实体 2 的计数。此处每一行指定特定日期的不同实体的计数。

  2. 显示实体 1 的总数乘以 35 的文本字段。

  3. 显示两列中实体计数总和的文本字段。

例如。

(实体1) (实体2)

<2> <3>

<4> <2>

<5> <7>

要求 1:pt 中指定的文本字段。2 应该显示 - 385 即。(11 * 35)

要求 2:pt 中指定的文本字段。3 应该显示 - 23 即。(11 + 12)

模型:

具有两个属性的对象:

int entity1Count

int entity2Count

我正在使用数组控制器对象在表格视图中显示数据。

我的问题是——

我可以通过 IB 中的绑定来实现我的要求吗?如果是,那怎么办?

谢谢,

米拉杰

0 投票
1 回答
660 浏览

core-data - managedObjectContext 中的选定对象

我有一个核心数据应用程序,其实体具有

主机名用户名密码

(所有 NSString)用于属性。

然后我将核心数据模型、数组控制器和表格视图与添加和删除按钮联系起来。

基本上,在这个阶段,我已经编写了零行代码,并且该应用程序运行良好。

(这是 Cocoa Programming for Mac OS X,Hillegass 第 11 章的简单版本)

问题是我如何(以编程方式)从 managedObjectContext 或数组控制器获取在 tableView 中看到的选定实体/对象?

0 投票
2 回答
208 浏览

cocoa - 想从我的排列对象 NSArrayController 中过滤掉 Windows 管理员共享

我在我的 NSArrayController 中设置了所有内容,让我的文件所有者代表对象成为我拥有的 tableview 的数据源。

在我在界面生成器中的绑定中,我想使用过滤谓词过滤掉数组控制器中名称中包含 $ 的任何项目....特别是实际上以 $ 结尾,因为这就是当我得到 Windows 管理员共享时的样子我正在收集的 FTP 共享数组。

我已将过滤谓词设置为:控制器键:选择 modelKeyPath:directorsAndFiles

value Transformer:嗯,我不知道?你能帮我吗

通缉:消除其中包含 $ 字符的任何项目

谢谢!

0 投票
1 回答
475 浏览

objective-c - 使用 NSTableColumn 手动绑定(没有 NSArrayController)

我想在表视图中使用绑定,但我没有使用 NSArrayController。我尝试将一个数组绑定到我的 NSTableColumn (我自己处理排序/搜索),但它不起作用。NSTableView/NSTableColumn 在绑定到 NSArrayController 时是否有某种魔法?更重要的是,NSArrayController 对 NSTableView 以外的任何东西有用吗?

0 投票
2 回答
1668 浏览

cocoa-bindings - NSArraycontroller selectionIndexes 绑定

我有以下设置:

一个具有 splitView 的窗口,我在其中显示 I NSCollectionView 在左视图中,在右视图中显示 detailView。两个视图都设置在单独的 xib 中。此外,我有一个 Datacontroller(NSArrayController 类),它管理一个可变的 NSMutableDictionaries 数组(moviesForChoice)。dataController 设置为应用程序委托。数组中的电影对象具有(名称、情节、流派等)等属性。

到目前为止,一切都很好...

在 NScollectionview 的 xib 中,我通过 Application.delegate.movi​​esForChoice 将 NSArraycontroller 内容属性绑定到我的数据控制器。collectionView 访问 arraycontroller.arrrangedObjects 和 arraycontroller.selectionIndexes。这工作正常,内容显示和选择在 collectionview 中工作正常(我的 collectionviewItem 呈现选择颜色)

在 detailView 的 xib 中,我想在 collectionview 中显示所选对象的信息。因此,我还向 xib 添加了一个数组控制器,将内容数组绑定到 Application.delegate.movi​​esForChoice 并将视图中的 NSTextfields 绑定到例如 arraycontroller.selection.name

我的问题来了:每次我打开带有两个 xib 的窗口时,我的 collectionview 都会正确显示所有可供选择的电影,而 detailview 会显示我的 collectionview 中第一个对象的信息。每当我点击 collectionView res. item 呈现选择颜色,但 detailView 不会更新。

我对它的理解是 DataController 不知道 selectionIndexes 中的更新,因此不能触发 detailView 中的更新。如我错了请纠正我...

为了解决这个问题,我尝试将 collectionView xib 中 arraycontroller 的 selectionIndexes 属性绑定到 Application.delegate.movi​​esForChoice.selecionIndexes 但这失败了:不支持 addObserver:forKeyPath:options:context:]。关键路径:selectionIndexes

我可以想象这意味着数据控制器不符合我的 Array moviesForChoice 的 KVO,但我为它实现了以下方法:

那么我错在哪里?如何正确绑定到 selectionIndexes?

非常感谢您的帮助!米

0 投票
1 回答
256 浏览

cocoa - 如何将数组控制器的“删除”与集合运算符绑定为内容

我有一个数据模型,其中“程序”与“待办事项”具有一对多的关系,并且窗口设置如下:

NSArrayController:程序。moc 中的 Program Entities,准备内容,无特殊绑定 NSTableView:单列,Value 绑定到 Program,controllerKey=arrangedObjects,path=Name

NSArrayController:待办事项。moc 中的 Todo 实体。准备内容,ContentArray 绑定到路径“@unionOfSets.Todos”的程序选择
NSTableView:几列,绑定 ToDos 排列对象名称。(以及其他列中的DueDate等)

这是有效的。对于每个选定的程序,其所有待办事项的联合显示在另一个表中。

我的问题是当我将按钮绑定到 ToDo 删除操作时,按下时出现以下错误:实体 Program is not key value coding-compliant for key "@unionOfSets"

我曾期望从 ToDo 控制器中删除选定的 ToDo 项目,我应该如何实现这一点?

在此先感谢
- 戴夫

0 投票
7 回答
4528 浏览

objective-c - NSTableView 拖放不起作用

我正在尝试为我的 NSTableView 设置非常基本的拖放操作。表格视图只有一列(带有自定义单元格)。该列绑定到 NSArrayController,而数组控制器的内容数组绑定到我的控制器对象上的 NSArray。数据在表中显示良好。我将 table view 的dataSourcedelegateoutlets 连接到我的控制器对象,然后实现了这些方法:

我还在以下位置注册了拖动类型-awakeFromNib

问题是 -tableView:writeRowsWithIndexes:toPasteboard: 方法从未被调用过。我看过一堆例子,但我无法弄清楚我做错了什么。问题可能是我正在使用自定义单元格吗?我应该在单元子类中覆盖某些东西以启用此功能吗?

编辑:确认。将自定义单元格切换为常规 NSTextFieldCell 可以进行拖动。现在,如何使用自定义单元格进行拖放操作