gpt4 book ai didi

cocoa - 如何通知绑定(bind)到 NSArrayController 的 NSMutableArray 的更改?

转载 作者:行者123 更新时间:2023-12-03 17:13:52 62 4
gpt4 key购买 nike

我有一个 NSArrayController,其内容数组绑定(bind)到文件的所有者(我的窗口 Controller ),模型键路径设置为图表数据。事件图表数据是 NSObject 的子类,事件是合成的 NSMutableArray 属性。

chartData 需要知道 NSArrayController 何时向 events 属性添加和删除事件对象。我认为我应该通过实现可变索引访问器来做到这一点。我将其放入我的 ChartData 类实现中:

- (void)insertObject:(TNLEvent *)event inEventsAtIndex:(NSUInteger)index {
[self.events insertObject:event atIndex:index];
return;
}

- (void)insertEvents:(NSArray *)eventArray atIndexes:(NSIndexSet *)indexes {
[self.events insertObjects:eventArray atIndexes:indexes];
return;
}

但是当发送 NSArrayController 的 add: 消息时,这两个方法都不会被调用。我假设 NSArrayController 使用的键路径不映射到这些方法,否则它们不符合键值。我如何知道何时向事件添加或删除对象?

更新:我重写了合成访问器 setEvents 并发现数组 Controller 每次将对象添加到它控制的数组时都会使用此方法。因此,可变索引访问器甚至从未被使用过。但这对我没有帮助,因为我仍然不知道添加了哪个对象。

最佳答案

我的解决方案是正确的,但我没有实现所有必需的访问器。

这似乎是应该实现的最小访问器集。

- (void)insertObject:(id)object inEventsAtIndex:(NSUInteger)index;
- (id)objectInEventsAtIndex:(NSUInteger)index;
- (NSArray *)eventsAtIndexes:(NSIndexSet *)indexes;
- (void)removeObjectFromEventsAtIndex:(NSUInteger)index;

如果这些就位,数组 Controller 将使用它们而不是数组属性的 setter getter。

关于cocoa - 如何通知绑定(bind)到 NSArrayController 的 NSMutableArray 的更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13235524/

62 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com