gpt4 book ai didi

ios - 未观察到 KVC NSKeyValueChangeRemoval

转载 作者:行者123 更新时间:2023-11-29 03:39:12 24 4
gpt4 key购买 nike

我正在尝试观察收藏笔记。这是代码:

-(void) registerNotesHeaderViewChangeNotification
{
[self.selectedVegetableGarden addObserver:self forKeyPath:@"notes" options:NSKeyValueObservingOptionNew | NSKeyValueChangeRemoval context:nil];
}

-(void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
MyVegetableGarden *vegGarden = (MyVegetableGarden *) object;

if([vegGarden.notes count] > 0)
{
self.tableView.tableHeaderView = [self createSharingView];
}

else
{
self.tableView.tableHeaderView = nil;
}

}

现在,我希望当我从笔记集合中删除一个对象时,它应该触发observeValueForKeyPath 方法。

[self.selectedVegetableGarden.notes removeObject:note];

目前,它还没有发射!

最佳答案

NSKeyValueChangeRemoval 不是可以在 -addObserver:forKeyPath:options:context:options 参数中传递的选项。它是传递给 -observeValueForKeyPath:ofObject:change:context: 方法的更改字典的 NSKeyValueChangeKindKey 条目中的值之一。

您没有以符合 KVO 的方式修改 notes 属性。您正在通过 notes 属性获取指向(大概)可变集合的指针,但随后您直接改变了它。您应该实现并使用适当的 collection mutation accessors .

您还可以使用 -mutableArrayValueForKey:-mutableSetValueForKey: 方法来获取代理并通过该代理更改属性,这将生成正确的 KVO 更改通知.

关于ios - 未观察到 KVC NSKeyValueChangeRemoval,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18691050/

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