gpt4 book ai didi

ios - 观察NSArray中NSDictionary的值变化

转载 作者:行者123 更新时间:2023-12-01 19:02:41 25 4
gpt4 key购买 nike

这是我的NSArray

carType (
{
isSelected = 0;
kFieldName = "All types";
kObjectValue = 0;
kObjectValueText = All;
},
{
isSelected = 0;
kFieldName = "4 seats";
kObjectValue = 4;
kObjectValueText = "4 seats";
},
{
isSelected = 1;
kFieldName = "7 seats";
kObjectValue = 7;
kObjectValueText = "7 seats";
}
)

如何观察 isSelected字段的变化?
我在代码中使用了KVO,但是它不起作用。
carTypeNSArraycontext属性
- (void)viewDidLoad
{
[super viewDidLoad];
[context addObserver:self forKeyPath:@"carType" options:NSKeyValueObservingOptionNew context:NULL];
}


-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
if ([keyPath isEqualToString:@"carType"]) {
NSLog(@"carType changed");
}
}

//dealloc remove observer

最佳答案

要观察数组中每个字典的isSelected的变化,您将必须以数组中每个字典的观察者身份注册。正如我在my book中所说:

您可以使用NSArray的实例方法addObserver:toObjectsAtIndexes:forKeyPath:options:context:高效地完成此操作,但是如果数组本身是可变的,则还必须使用随后添加到数组中的任何新字典来注册该键(并在删除字典时注销)从数组)。

最后一部分可能会令人生畏。在许多情况下,最好完全放弃,而只使用一个自定义类,该类在发生突变时会发出通知(而不是NSDictionary,而不是KVO)。

关于ios - 观察NSArray中NSDictionary的值变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21821093/

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