gpt4 book ai didi

objective-c - 核心数据依赖于多对多关系的属性

转载 作者:行者123 更新时间:2023-12-03 16:29:47 26 4
gpt4 key购买 nike

每当与更改有一对多关系的项目时,我都会尝试更新 NSManagedObject 中的自定义属性。我已经按照苹果的规定重写了以下方法:

- (void)addDevicesObject:(Device *)value;
- (void)removeDevicesObject:(Device *)value;
- (void)addDevices:(NSSet *)value;
- (void)removeDevices:(NSSet *)value;

在实现中,我添加或删除已更改对象的观察者。问题是当我的基于绑定(bind)的 UI 对数据进行更改时,不会调用我的覆盖方法。我应该怎样做呢?

最佳答案

如果在请求时计算自定义属性,请使用 +keyPathsForValuesAffectingValueForKey: 在设备更改时触发更新通知。

+ (NSSet *)keyPathsForValuesAffectingValueForKey:(NSString *)key {
if([key isEqualToString:@"MyCustomProperty"]) return [NSSet setWithObject:@"devices"];
return [super keyPathsForValuesAffectingValueForKey:key];
}

如果您只想在设备更改时执行计算,请使用 KVO 在更改时收到通知。

//Put this in the various awake... methods
[self addObserver:self forKeyPath:@"devices" options:0 context:nil];
//Put this in the didTurnIntoFault method
[self removeObserver:self forKeyPath:@"devices"];

- (void)observeValueForKeyPath:(NSString *)path ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
if(object == self && [path isEqualToString:@"devices"]) {
//Update custom property here
} else [super observeValueForKeyPath:path ofObject:object change:change context:context];
}

关于objective-c - 核心数据依赖于多对多关系的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4631755/

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