diff --git a/Classes/lib/ActiveResource+Base.h b/Classes/lib/ActiveResource+Base.h index 16a9a6c..0144d06 100644 --- a/Classes/lib/ActiveResource+Base.h +++ b/Classes/lib/ActiveResource+Base.h @@ -17,7 +17,8 @@ + (void)setUser:(NSString *)user; + (NSString *)getPassword; + (void)setPassword:(NSString *)password; - ++ (SEL)getParseDataMethod; ++ (void)setParseDataMethod:(SEL)parseMethod; // Finders + (NSArray *)findAll; diff --git a/Classes/lib/ActiveResource+Base.m b/Classes/lib/ActiveResource+Base.m index e583bd0..5d3f7ae 100644 --- a/Classes/lib/ActiveResource+Base.m +++ b/Classes/lib/ActiveResource+Base.m @@ -15,10 +15,11 @@ static NSString *_activeResourceSite = nil; static NSString *_activeResourceUser = nil; static NSString *_activeResourcePassword = nil; +static SEL _activeResourceParseDataMethod = nil; @implementation ActiveResource (Base) - +#pragma mark configuration methods + (NSString *)getSite { return _activeResourceSite; } @@ -43,6 +44,14 @@ + (void)setPassword:(NSString *)password { _activeResourcePassword = password; } ++ (SEL)getParseDataMethod { + return (nil == _activeResourceParseDataMethod) ? @selector(fromXMLData:) : _activeResourceParseDataMethod; +} + ++ (void)setParseDataMethod:(SEL)parseMethod { + _activeResourceParseDataMethod = parseMethod; +} + // Find all items + (NSArray *)findAllWithResponse:(NSError **)aError { @@ -50,7 +59,7 @@ + (NSArray *)findAllWithResponse:(NSError **)aError { if([res isError] && aError) { *aError = res.error; } - return [self allFromXMLData:res.body]; + return [self performSelector:[self getParseDataMethod] withObject:res.body]; } + (NSArray *)findAll { @@ -63,7 +72,7 @@ + (id)find:(NSString *)elementId withResponse:(NSError **)aError { if([res isError] && aError) { *aError = res.error; } - return [self fromXMLData:res.body]; + return [self performSelector:[self getParseDataMethod] withObject:res.body]; } + (id)find:(NSString *)elementId {