>我的应用程序中有一个通知机制。 基本上,我有一个字段,该字段会随每个响应一起发送,并且当该字段的值发生变化时,我会发布通知。有没有办法知道字段何时根本没有发送?
现在,该字段需要在那里,以便在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
回调块中处理比在对象本身中处理得更好。