问题标签 [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.
objective-c - NSArrayController,自定义排序
我有一个 NSTableView,每列都绑定到 NSArrayController 中的适当值。其中一列包含一个 NSImageCell,显示图像。
我想按此列排序,但显然按图像的对象值排序不是我想要的。我实际上是按其他字段的组合排序的,但我不知道如何设置它。当我单击相关字段的列标题时,不会出现排序箭头。
我将 NSSortDescriptors 应用于 NSArrayController 以对其他列进行排序,但是在排序时,似乎所有 NSSortDescriptors 都可以访问表格单元格的对象值。
我需要通过对象值是其属性的对象的比较方法进行排序。这可能吗?我已经对 NSArrayController 进行了子类化,似乎在某个地方会有一个不错的选择,但我在文档中找不到任何有帮助的东西。
cocoa - 通过绑定显示表格视图中两行的日期,分别在两个文本字段中
我有一个名为事务的类,其中一个属性是 NSDate 类型的事务日期。
我正在使用 NSArrayController 在表视图中显示事务列表。
我的要求是——
我想在标记为“从”的文本字段中的第一行显示日期,在标记为“到”的文本字段的最后一行显示日期。
我的问题是——
我可以通过在 IB 中的绑定来实现这一点吗?如果是,那怎么办?
谢谢,
米拉杰
objective-c - 如何在不阻塞接口的情况下为 NSTableView 加载数据?
我正在初始化一个简单的接口,其中一个 NSTableView 绑定到一个数组控制器(它管理一个字典数组)。我想在后台加载数组的内容(这是一个非常耗时的过程),每 100 或 1000 个元素更新一次表格视图。这个想法是界面可用且响应迅速。我不知道之后如何触发更新/刷新。桌子仍然是空的。任何人都可以提供指点吗?
我目前的做法是:
如果我只是直接加载数据,而不是在后台尝试这样做,一切正常,但需要将近 30 秒。
cocoa - 简单的绑定问题
我正在尝试一个像这样的简单应用程序-
看法:
表格视图显示第一列中实体 1 的计数和第二列中实体 2 的计数。此处每一行指定特定日期的不同实体的计数。
显示实体 1 的总数乘以 35 的文本字段。
显示两列中实体计数总和的文本字段。
例如。
(实体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 中的绑定来实现我的要求吗?如果是,那怎么办?
谢谢,
米拉杰
core-data - managedObjectContext 中的选定对象
我有一个核心数据应用程序,其实体具有
主机名用户名密码
(所有 NSString)用于属性。
然后我将核心数据模型、数组控制器和表格视图与添加和删除按钮联系起来。
基本上,在这个阶段,我已经编写了零行代码,并且该应用程序运行良好。
(这是 Cocoa Programming for Mac OS X,Hillegass 第 11 章的简单版本)
问题是我如何(以编程方式)从 managedObjectContext 或数组控制器获取在 tableView 中看到的选定实体/对象?
cocoa - 想从我的排列对象 NSArrayController 中过滤掉 Windows 管理员共享
我在我的 NSArrayController 中设置了所有内容,让我的文件所有者代表对象成为我拥有的 tableview 的数据源。
在我在界面生成器中的绑定中,我想使用过滤谓词过滤掉数组控制器中名称中包含 $ 的任何项目....特别是实际上以 $ 结尾,因为这就是当我得到 Windows 管理员共享时的样子我正在收集的 FTP 共享数组。
我已将过滤谓词设置为:控制器键:选择 modelKeyPath:directorsAndFiles
value Transformer:嗯,我不知道?你能帮我吗
通缉:消除其中包含 $ 字符的任何项目
谢谢!
objective-c - 使用 NSTableColumn 手动绑定(没有 NSArrayController)
我想在表视图中使用绑定,但我没有使用 NSArrayController。我尝试将一个数组绑定到我的 NSTableColumn (我自己处理排序/搜索),但它不起作用。NSTableView/NSTableColumn 在绑定到 NSArrayController 时是否有某种魔法?更重要的是,NSArrayController 对 NSTableView 以外的任何东西有用吗?
cocoa-bindings - NSArraycontroller selectionIndexes 绑定
我有以下设置:
一个具有 splitView 的窗口,我在其中显示 I NSCollectionView 在左视图中,在右视图中显示 detailView。两个视图都设置在单独的 xib 中。此外,我有一个 Datacontroller(NSArrayController 类),它管理一个可变的 NSMutableDictionaries 数组(moviesForChoice)。dataController 设置为应用程序委托。数组中的电影对象具有(名称、情节、流派等)等属性。
到目前为止,一切都很好...
在 NScollectionview 的 xib 中,我通过 Application.delegate.moviesForChoice 将 NSArraycontroller 内容属性绑定到我的数据控制器。collectionView 访问 arraycontroller.arrrangedObjects 和 arraycontroller.selectionIndexes。这工作正常,内容显示和选择在 collectionview 中工作正常(我的 collectionviewItem 呈现选择颜色)
在 detailView 的 xib 中,我想在 collectionview 中显示所选对象的信息。因此,我还向 xib 添加了一个数组控制器,将内容数组绑定到 Application.delegate.moviesForChoice 并将视图中的 NSTextfields 绑定到例如 arraycontroller.selection.name
我的问题来了:每次我打开带有两个 xib 的窗口时,我的 collectionview 都会正确显示所有可供选择的电影,而 detailview 会显示我的 collectionview 中第一个对象的信息。每当我点击 collectionView res. item 呈现选择颜色,但 detailView 不会更新。
我对它的理解是 DataController 不知道 selectionIndexes 中的更新,因此不能触发 detailView 中的更新。如我错了请纠正我...
为了解决这个问题,我尝试将 collectionView xib 中 arraycontroller 的 selectionIndexes 属性绑定到 Application.delegate.moviesForChoice.selecionIndexes 但这失败了:不支持 addObserver:forKeyPath:options:context:]。关键路径:selectionIndexes
我可以想象这意味着数据控制器不符合我的 Array moviesForChoice 的 KVO,但我为它实现了以下方法:
那么我错在哪里?如何正确绑定到 selectionIndexes?
非常感谢您的帮助!米
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 项目,我应该如何实现这一点?
在此先感谢
- 戴夫
objective-c - NSTableView 拖放不起作用
我正在尝试为我的 NSTableView 设置非常基本的拖放操作。表格视图只有一列(带有自定义单元格)。该列绑定到 NSArrayController,而数组控制器的内容数组绑定到我的控制器对象上的 NSArray。数据在表中显示良好。我将 table view 的dataSource
和delegate
outlets 连接到我的控制器对象,然后实现了这些方法:
我还在以下位置注册了拖动类型-awakeFromNib
:
问题是 -tableView:writeRowsWithIndexes:toPasteboard: 方法从未被调用过。我看过一堆例子,但我无法弄清楚我做错了什么。问题可能是我正在使用自定义单元格吗?我应该在单元子类中覆盖某些东西以启用此功能吗?
编辑:确认。将自定义单元格切换为常规 NSTextFieldCell 可以进行拖动。现在,如何使用自定义单元格进行拖放操作?