一般来说......在NSManagedObject类中,对于给定的float动态属性的一个setter中,可以使用点语法getter来获取的其他 float动态属性该setter中的NSManagedObject?或者我是否需要使用符合KVC标准的CoreData访问器任何时间访问一个值,即使它来自与访问值的实际getter不同的方法?我会假设以这种方式调用dot-syntax会导致我的其他自定义访问器触发,这对我来说没问题,因为里面有正确的KVC原语访问器。但我似乎遇到了奇怪的问题,其中点语法要么失败,要么似乎有不可预测的结果,我不确定是不是因为我以不安全的方式使用点语法,或者如果还有其他一些我还没想到的错误。
以下是我正在讨论的代码示例:
- (void)illTakeYouToTheWoodshed {
float h = self.SSx.floatValue/self.yourMomsCurrentWeightInTons.floatValue;
[self willChangeValueForKey:@"SSy"];
[self setPrimitiveValue:@(h) forKey:@"SSy"];
[self didChangeValueForKey:@"SSy"];
[self diagonal]; //makes sure nd gets set
}
- (void)setSSx:(NSNumber *)value{
[self willChangeValueForKey:@"SSx"];
[self setPrimitiveValue:value forKey:@"SSx"];
[self didChangeValueForKey:@"SSx"];
if(self.WorH==syanara || self.WorH == dude_wtf) {
if(self.SSy.floatValue != 0.0) {
[self doThatFunkyDance];
[self diagonal];
} else if (self.youBetcha.floatValue != 0.0) {
[self whatTheFrakDoesThisEvenDo];
}
} else if (self.WorH==fooBarTastic) {
if(self.yourMomsCurrentWeightInTons.floatValue != 0.0) {
[self illTakeYouToTheWoodshed];
}
} else {
NSLog(@"Escaped with salad not having been tossed.");
}
}