问题标签 [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 投票
3 回答
1103 浏览

cocoa - 可可绑定问题;绑定表列不显示任何数据,控制台中没有错误

我在将 Cocoa 项目从手动同步的接口模型转换为绑定模型时遇到了麻烦,因此我不必担心接口胶水代码。

我遵循了 CocoaDevCentral Cocoa Bindings 教程,以确保我已经涵盖了所有基础,但事情并没有正常工作。我有一个主从界面,但我什至无法让界面的主部分正常工作。主列中没有显示任何数据,即使我已经设置了类似于教程中显示的绑定模型。我已经确保我所有的控制器和对象都有-(id)key并且-(void)setKey:(id)key方法,以便它们与绑定兼容,我在我的 nib 中创建了一个 ControllerAlias 对象,将其连接到我的控制器,创建了一个 NSArrayController 绑定到 ControllerAlias 连接到的类中的 NSMutableArrays 之一,确保设置数组中包含的对象类型,然后我将表列绑定到 NSArrayController。

我在控制台中没有收到任何错误,设置NSBindingDebugLogLevel为 1 也不会产生任何错误,这将帮助我找出问题所在。

为了确保一切正常,我唯一能想到的另一件事是检查连接到 NSArrayController 的 NSMutableArray 中是否确实包含某些内容,并且确实存在。

有什么建议么?我应该检查 Cocoa 绑定还有哪些其他典型的陷阱?

0 投票
4 回答
2449 浏览

objective-c - 从多个 XIB 中使用一个 NSArrayController

我在不同 XIB 中定义的两个窗口中显示一个 NSArrayController 的内容时遇到了一些问题。

在我的主窗口中(在 MainMenu.xib 中),我有一个 NSTableView 绑定到 NSArrayController

在我的第二个 XIB 中,我有另一个包含 NSTableView 的窗口。我创建了一个新的 NSArrayController,并将表绑定到该 NSArrayController 的内容。

两个 NSArrayController 都绑定到完全相同的 NSArray。

一开始一切都很好,但问题是如果在主窗口中使用 NSArrayController 将对象添加到数组中,则辅助窗口的数据视图不会更新。这很可能是因为它不知道自己需要更新自己,因为它的 NSArrayController 没有用于添加新对象。

我想做的是在两个窗口中使用完全相同的 NSArrayController 实例。这样,如果将对象添加到数组中,两个视图都将收到更改通知。

问题是我无法弄清楚如何在 Interface Builder 中执行此操作。我无法将 NSArrayController 绑定到另一个 NSArrayController(我收到一个运行时错误,表明它只能绑定到 NSArray)。将 NSArrayController 连接到 File's Owner 的 NSArrayController 成员也无济于事,因为这只会清除我希望它使用的 NSArrayController。

我想我可以自己在代码中设置绑定,但如果可能的话,使用 Interface Builder 似乎会更好。有没有办法在 Interface Builder 中做到这一点,或者可能有更好的方法来一起设置?

更新:针对 Chuck 的回答和评论,我尝试了以下操作: - 将我的 NSTableView 的表格内容绑定到 NSArrayController 成员的排列对象(如果我使用 NSArrayController 本身,日志中出现错误:“[NSArrayController count] : unrecognized selector sent to instance") - 将表中的每一列绑定到文件的所有者,模型键路径为 arrayController.arrangedObjects.propertyName

这仍然没有导致表的内容得到更新。我认为这是因为我绑定到 NSArrayController 的排列对象,而不是绑定到 NSArrayController 本身。但是,如果我直接绑定到 NSArrayController,那会给我带来错误。

通常,我会从“绑定到”组合框中选择我的 NSArrayController,使用排列对象作为控制器键,并将属性本身作为模型键路径。我不确定在这种情况下如何做同样的事情——如果可以的话。

我在上面的过程中做错了吗?

0 投票
2 回答
1118 浏览

cocoa - 如何从 CoreData-Entities 获取一些值到代码中

我在我的 CoreData 应用程序中创建了一个具有一些属性的实体。想象一个 tableview 和一个绑定的 NSArrayController。我创建(和编辑)我的实体“实例”。我的问题是如何将这些属性的值添加到我的代码中。如果还有更多问题:http: //twitter.com/xP_ablo

0 投票
3 回答
2238 浏览

cocoa - observeValueForKeyPath:ofObject:change:context: 不适用于数组

我有一个对象,它为一个名为contents. 在那些访问器中,当我修改底层数组时,我调用willChange:valuesAtIndexes:forKey:didChange:valuesAtIndexes:forKey:

我还有一个自定义视图对象,它contents通过NSArrayController. 在我见过observeValueForKeyPath:ofObject:change:context:的变化字典中唯一的值是. 当我向数组添加对象时,我希望看到.NSKeyValueChangeKindKeyNSKeyValueChangeSettingNSKeyValueChangeInsertion

正如您想象的那样,每次插入单个项目时重新创建它观察到的对象的视图的内部表示 - 特别是当我批量加载数百个项目时 - 会带来相当大的性能问题。每次添加或删除单个项目时,Cocoa 似乎都认为我正在设置一个全新的数组,我做错了什么?

0 投票
5 回答
5860 浏览

macos - 我应该如何从 NSArrayController 控制的 NSTableView 中删除所有项目?

我正在使用NSArrayController,NSMutableArrayNSTableView显示我自己的自定义对象的列表(尽管如果您也只是显示香草NSString对象的列表,这个问题可能适用)。

在不同的时间点,我需要清除我的数组并刷新我的数据源中的数据。但是,仅调用removeAllObjects我的NSMutableArray对象不会触发 KVO 更新,因此屏幕上的列表保持不变。

NSArrayController没有可用 removeAllObjects方法,这看起来很奇怪。(它确实有addObject,我用它来添加对象,确保触发 KVO 并更新 UI。)

我设法使这种情况正确发生的最干净的方法是:

...所以我不得不自己手动执行 KVO 通知(这是在我的测试应用程序类中,它包含myArray属性,NSMutableArray如前所述。)

这似乎是错误的 - 有更好的方法吗?从我的谷歌搜索来看,似乎有些人对removeAllObjectsin的缺乏感到困惑NSArrayController,但还没有看到任何更好的解决方案。

我已经看到了这个解决方案:

但这对我来说看起来更不愉快。至少我的解决方案至少是少量的自我记录。

Apple 是否没有注意到有时人们可能想要清空通过NSArrayController对象管理的列表控件?这似乎很明显,所以我想我一定错过了一些东西......

另外:当然,如果我向数组中添加新项目(通过NSArrayController),那么这会触发带有 的 KVO 更新NSArrayController/NSTableView,但是:

  1. 有时我不会在列表中放入任何项目,因为没有。所以你只看到旧物品。
  2. 无论如何,这有点恶心。
0 投票
1 回答
2088 浏览

cocoa - Cocoa 绑定到数组控制器中的特定项目

是否可以使用NSArrayController将 aNSTextField的值绑定到数组中的特定项目?特别是,我想绑定到数组中第一项的属性,如果数组为空,则不显示任何内容。

使用arrangedObjects.command仅显示“(” - 大概它试图为每个项目显示一个带有逗号分隔字符串的多行字符串。我只想要第一个。

0 投票
1 回答
609 浏览

cocoa - 是否可以使用 Cocoa 的 Bindings 将可编辑的 NSTableView 连接到 NSMutableArray?

从我可以拼凑起来的点点滴滴看来,这个答案将是“不”,所以我将广泛地解释在我试图敲定的(可能的)情况下我想要实现的目标一个螺丝。

我的应用程序中有一个要读入的有效文件扩展名列表,我正在通过一个目录对其进行递归。我希望这是一个偏好,所以我有以下内容:

我将 NSTableView 绑定到 NSArrayController 绑定到共享用户默认控制器...

拥有用户可自定义的有效扩展列表是完全错误的方法吗?我是否误解了 NSUserDefaults 的作用?

0 投票
2 回答
3020 浏览

iphone - 为什么 iPhone 上没有 NSArrayController?

为什么 iPhone 上没有 NSArrayController?iPhone 会有 NSArrayController 吗?

0 投票
1 回答
177 浏览

cocoa - 是否可以有一个结合了多个关键路径的绑定?

假设我有一个具有数量值的对象。

另外,我有一个数组控制器,其中包含这些对象的数组。

此外,我有一个表,它具有总列的百分比(即给定行的数量占所有行数量总和的百分比),需要通过绑定填充适当的值。

然后看起来这样做的想法是将此列绑定到 arrayController.arrangedObjects.@sum.quantity 除以 arrayController.arrangedObjects.quantity。

是否有可能做到这一点?

如果没有,您能否提出实现同样目的的替代方法?

0 投票
2 回答
785 浏览

objective-c - 判断 NSArrayController 何时完成从持久存储中加载其内容的正确方法是什么?

了解绑定到核心数据存储的阵列控制器何时完成加载其内容的最佳方法是什么?

我有一些方法(即 awakeFromNib)依赖于具有其内容的数组控制器,但大多数时候,当在该对象上调用 awakeFromNib 时,数组控制器还没有其内容。

我想延迟我的行动,直到我知道控制器拥有它的所有内容。