一般来说......在 NSManagedObject 类中,在给定浮动动态属性的设置器之一中,是否可以将点语法获取器用于该设置器中同一 NSManagedObject 的其他浮动动态属性?或者我是否需要使用任何符合 KVC 标准的 CoreData 访问器我何时访问一个值,即使它来自与正在访问的值的实际 getter 不同的方法?我会假设以这种方式调用点语法会导致我的其他自定义访问器触发,这对我来说没问题,因为里面有适当的 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.");
}
}