Updated polymorphic mapping to use valueForKeyPath. Slight updates to the documentation. refs #105

This commit is contained in:
Blake Watters
2011-07-30 16:18:14 -04:00
parent 670234b775
commit eab35ef3f7
5 changed files with 23 additions and 17 deletions

View File

@@ -86,10 +86,10 @@ typedef RKObjectMapping*(^RKObjectPolymorphicMappingDelegateBlock)(id);
is 'female' we want to use the Girl class. We might define our polymorphic mapping like so:
RKObjectPolymorphicMapping* mapping = [RKObjectPolymorphicMapping polymorphicMapping];
[mapping setObjectMapping:boyMapping whenValueOfKey:@"gender" isEqualTo:@"male"];
[mapping setObjectMapping:boyMapping whenValueOfKey:@"gender" isEqualTo:@"female"];
[mapping setObjectMapping:boyMapping whenValueOfKeyPath:@"gender" isEqualTo:@"male"];
[mapping setObjectMapping:boyMapping whenValueOfKeyPath:@"gender" isEqualTo:@"female"];
*/
- (void)setObjectMapping:(RKObjectMapping*)objectMapping whenValueOfKey:(NSString*)key isEqualTo:(id)value;
- (void)setObjectMapping:(RKObjectMapping*)objectMapping whenValueOfKeyPath:(NSString*)key isEqualTo:(id)value;
/**
Invoked by the RKObjectMapper and RKObjectMappingOperation to determine the appropriate RKObjectMapping to use

View File

@@ -52,7 +52,7 @@ BOOL RKObjectIsValueEqualToValue(id sourceValue, id destinationValue);
}
- (BOOL)isMatchForData:(id)data {
return RKObjectIsValueEqualToValue([data valueForKey:_key], _value);
return RKObjectIsValueEqualToValue([data valueForKeyPath:_key], _value);
}
- (NSString*)matchDescription {
@@ -97,7 +97,7 @@ BOOL RKObjectIsValueEqualToValue(id sourceValue, id destinationValue);
[super dealloc];
}
- (void)setObjectMapping:(RKObjectMapping*)objectMapping whenValueOfKey:(NSString*)key isEqualTo:(id)value {
- (void)setObjectMapping:(RKObjectMapping*)objectMapping whenValueOfKeyPath:(NSString*)key isEqualTo:(id)value {
RKLogDebug(@"Adding dynamic object mapping for key '%@' with value '%@' to destination class: %@", key, value, NSStringFromClass(objectMapping.objectClass));
RKObjectPolymorphicMappingMatcher* matcher = [[RKObjectPolymorphicMappingMatcher alloc] initWithKey:key value:value objectMapping:objectMapping];
[_matchers addObject:matcher];