Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 如何通知绑定到NSArrayController的NSMutableArray的更改?_Cocoa_Cocoa Bindings_Key Value Coding - Fatal编程技术网

Cocoa 如何通知绑定到NSArrayController的NSMutableArray的更改?

Cocoa 如何通知绑定到NSArrayController的NSMutableArray的更改?,cocoa,cocoa-bindings,key-value-coding,Cocoa,Cocoa Bindings,Key Value Coding,我有一个NSArrayController,它的内容数组绑定到文件的所有者(我的窗口控制器),模型密钥路径设置为chartData。events chartData是NSObject的子类,events是合成的NSMutableArray属性 chartData需要知道NSArrayController何时向events属性添加和删除事件对象。我想我应该通过实现可变索引访问器来实现这一点。我将此应用于我的chartData类实现中: - (void)insertObject:(TNLEvent

我有一个NSArrayController,它的内容数组绑定到文件的所有者(我的窗口控制器),模型密钥路径设置为chartData。events chartData是NSObject的子类,events是合成的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
,发现数组控制器每次向其控制的数组添加对象时都使用此方法。因此,可变索引访问器甚至从未使用过。这对我没有帮助,因为我仍然不知道添加了哪个对象。

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

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

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

如果这些设置到位,数组控制器将使用它们,而不是数组属性的setter getter。

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

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

- (void)insertObject:(id)object inEventsAtIndex:(NSUInteger)index;
- (id)objectInEventsAtIndex:(NSUInteger)index;
- (NSArray *)eventsAtIndexes:(NSIndexSet *)indexes;
- (void)removeObjectFromEventsAtIndex:(NSUInteger)index;
如果这些设置到位,数组控制器将使用它们,而不是数组属性的setter-getter