如何观察 RestKit 中是否存在字段.当值为 null 时,不会调用 Setter



>我的应用程序中有一个通知机制。 基本上,我有一个字段,该字段会随每个响应一起发送,并且当该字段的值发生变化时,我会发布通知。有没有办法知道字段何时根本没有发送?

现在,该字段需要在那里,以便在RestKit进行映射时调用我的 setter,我可以发布通知。但是,最好不要在不需要时发送此字段,并且我收到了该字段消失的回调。

下面是说明问题的简化代码:

@interface MyClass : NSObject
@property (nonatomic, strong) NSNumber *myPreciousNumber;
+ (RKObjectMapping *)mappingForClass;
@end

@implementation MyClass

+ (RKObjectMapping *)mappingForClass
{
    RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[self class]];
    [mapping addAttributeMappingsFromDictionary:@
     {
         @"myPreciousNumber" : @"myPreciousNumber"
     }];
     return mapping;
}

- (void)setMyPreciousNumber:(NSNumber *)myPreciousNumber
{
    _myPreciousNumber = myPreciousNumber;
    // Post a value changed notification here.
}

显然,当响应中没有字段发送时,不会调用 setter。当字段的值为 null 时,也不会调用它。

我想知道是否有办法在发送的值为 null 时调用 setter,或者是否有另一种方法可以知道字段何时不存在。

您可以查看在映射上设置setDefaultValueForMissingAttributes,但这可能会导致您不想要的副作用。

无论如何,KVO将比您自己的通知(addObserver:forKeyPath:options:context:)更好的解决方案。

您确实需要更清楚地了解通知解决方案的原因,因为它 99% 不是正确的方法。当您似乎需要更广泛的对象级别更改通知时,从单个变量发布更改通知表明您的更改通知在 RestKit success回调块中处理比在对象本身中处理得更好。

最新更新