【发布时间】:2014-04-15 07:41:20
【问题描述】:
我不知道如何简单地观察一个对象属性的变化,这没有按预期工作。
这是我的代码:
- (void)observeBasketValueChane:(MyObject*)theObject{
[theObject addObserver: self
forKeyPath: @"value"
options: NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld
context: NULL];
// not working
theObject.value = 5;
// will work
[theObject willChangeValueForKey:@"value"];
[theObject setValue: [NSNumber numberWithInt: 3] forKey:@"value"];
[theObject didChangeValueForKey:@"value"];
}
Apple 文档说 KVO on dot 语法是自动完成的。我的 value 属性是在 MyObject 上合成的,但没有按预期工作。请注意,Myobject 是一个 coreData 对象。但我不明白为什么它会改变一些东西,因为我已经合成了这个方法。感谢您的帮助。
* 编辑
正如 Quellish 所说,我的财产被定义为
@property (nonatomic) int32_t value;
那是行不通的。
正确的做法是
@property (nonatomic) NSNumber* value;
【问题讨论】:
-
您能否用有关如何定义属性“值”以及您是否实现了自己的访问器的信息来更新您的问题?你不应该在使用属性时调用 will/didChangeValueForKey,只有在直接访问 ivar 时(你不应该这样做)。
标签: ios core-data key-value-observing