mirror of
https://github.com/zhigang1992/RestKit.git
synced 2026-05-22 19:09:19 +08:00
Add support for sending objects of one type and getting back another. Target object has been disambiguated into sourceObject and targetObject
and act independently with regards to serialization and destination mapping. When you leverage the getObject:mapResponseWith: flavor of methods, the type of your sourceObject is checked with the destination type of the object mapping. If they agree, it is assumed that you are trying to update the object with the results of the mapping and targetObject is set appropriately. If they do not match, the targetObject is set to nil so that new objects will be loaded. closes #161, #168
This commit is contained in:
@@ -158,6 +158,7 @@ static RKObjectManager* sharedManager = nil;
|
||||
NSString* resourcePath = [self.router resourcePathForObject:object method:method];
|
||||
RKObjectLoader* loader = [self objectLoaderWithResourcePath:resourcePath delegate:delegate];
|
||||
loader.method = method;
|
||||
loader.sourceObject = object;
|
||||
loader.targetObject = object;
|
||||
loader.serializationMIMEType = self.serializationMIMEType;
|
||||
loader.serializationMapping = [self.mappingProvider serializationMappingForClass:[object class]];
|
||||
@@ -193,6 +194,11 @@ static RKObjectManager* sharedManager = nil;
|
||||
|
||||
- (RKObjectLoader*)getObject:(id<NSObject>)object mapResponseWith:(RKObjectMapping*)objectMapping delegate:(id<RKObjectLoaderDelegate>)delegate {
|
||||
RKObjectLoader* loader = [self objectLoaderForObject:object method:RKRequestMethodGET delegate:delegate];
|
||||
if ([object isMemberOfClass:[objectMapping objectClass]]) {
|
||||
loader.targetObject = object;
|
||||
} else {
|
||||
loader.targetObject = nil;
|
||||
}
|
||||
loader.objectMapping = objectMapping;
|
||||
[loader send];
|
||||
return loader;
|
||||
@@ -200,6 +206,11 @@ static RKObjectManager* sharedManager = nil;
|
||||
|
||||
- (RKObjectLoader*)postObject:(id<NSObject>)object mapResponseWith:(RKObjectMapping*)objectMapping delegate:(id<RKObjectLoaderDelegate>)delegate {
|
||||
RKObjectLoader* loader = [self objectLoaderForObject:object method:RKRequestMethodPOST delegate:delegate];
|
||||
if ([object isMemberOfClass:[objectMapping objectClass]]) {
|
||||
loader.targetObject = object;
|
||||
} else {
|
||||
loader.targetObject = nil;
|
||||
}
|
||||
loader.objectMapping = objectMapping;
|
||||
[loader send];
|
||||
return loader;
|
||||
@@ -207,6 +218,11 @@ static RKObjectManager* sharedManager = nil;
|
||||
|
||||
- (RKObjectLoader*)putObject:(id<NSObject>)object mapResponseWith:(RKObjectMapping*)objectMapping delegate:(id<RKObjectLoaderDelegate>)delegate {
|
||||
RKObjectLoader* loader = [self objectLoaderForObject:object method:RKRequestMethodPUT delegate:delegate];
|
||||
if ([object isMemberOfClass:[objectMapping objectClass]]) {
|
||||
loader.targetObject = object;
|
||||
} else {
|
||||
loader.targetObject = nil;
|
||||
}
|
||||
loader.objectMapping = objectMapping;
|
||||
[loader send];
|
||||
return loader;
|
||||
@@ -214,10 +230,14 @@ static RKObjectManager* sharedManager = nil;
|
||||
|
||||
- (RKObjectLoader*)deleteObject:(id<NSObject>)object mapResponseWith:(RKObjectMapping*)objectMapping delegate:(id<RKObjectLoaderDelegate>)delegate {
|
||||
RKObjectLoader* loader = [self objectLoaderForObject:object method:RKRequestMethodDELETE delegate:delegate];
|
||||
if ([object isMemberOfClass:[objectMapping objectClass]]) {
|
||||
loader.targetObject = object;
|
||||
} else {
|
||||
loader.targetObject = nil;
|
||||
}
|
||||
loader.objectMapping = objectMapping;
|
||||
[loader send];
|
||||
return loader;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
Reference in New Issue
Block a user