在NSManagedObject的自定义类中使用点语法getter是否可以?

时间:2013-10-11 14:40:50

标签: core-data nsmanagedobject key-value-observing kvc

一般来说......在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.");
    }
}

0 个答案:

没有答案