gpt4 book ai didi

ios - KVO - 观察包含在 NSArray 中的对象的属性

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:29:38 24 4
gpt4 key购买 nike

仍然无法使用对象的 NSArray 消化 KVO。我的要求是例如假设车库里有多辆车。我想观察汽车轮胎特性的变化,例如前轮胎升级或后轮胎升级。

汽车.h

@property(nonatomic, strong) NSString *frontTyre;
@property(nonatomic, strong) NSString *backTyre;

车库.h

@property(nonatomic, strong) NSArray *cars; //Think there are two cars in the garage.

在 CarOwner.m 中

[Garage addObserver:self forKeyPath:@"cars" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:nil];]


-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if([keyPath isEqualToString:@"cars"])
{
//Here I am able to get the car object which got a type upgrade.
//But how to know which tyre got upgraded?
}
}

在升级汽车轮胎时,我正在做:

[self willChange:NSKeyValueChangeSetting valuesAtIndexes:index forKey:@"remoteUsers"];
[car1.frontTyre = @"upgraded"];
[self didChange:NSKeyValueChangeSetting valuesAtIndexes:index forKey:@"remoteUsers"];

我应该去吗thisthis方法?或者您可能有任何其他建议。

最佳答案

您可以使用如下方式添加观察者:

[Garage.cars addObserver:self toObjectsAtIndexes:[NSMutableIndexSet indexSetWithIndexesInRange:NSMakeRange(0, Garage.cars.count)] forKeyPath:@"frontTyre" options:0 context:nil];

记得在必要时移除观察者。

关于ios - KVO - 观察包含在 NSArray 中的对象的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38588160/

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