有没有办法发布大型 NSObject 派生对象结构,而无需手动将每个属性和属性集合指定到 RestKit?
这是一个简单的例子,只有一个类DABUser
但是想象它包含的属性也是对象、集合,并且那些具有更多相同的属性来表示更大的对象树。
要发布的类:
@interface DABUser : NSObject
@property (nonatomic) int age;
@property (copy, nonatomic) NSString *name;
@end
发布一个DABUser
对象:
RKObjectMapping *userMapping = [RKObjectMapping requestMapping];
[userMapping addAttributeMappingsFromArray:@[ @"age", @"name"]];
RKRequestDescriptor *requestDescriptor = [RKRequestDescriptor requestDescriptorWithMapping:userMapping objectClass:[DABUser class] rootKeyPath:nil method:RKRequestMethodPOST];
RKObjectManager *objectManager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:@"http://localhost:3000"]];
objectManager.requestSerializationMIMEType = RKMIMETypeJSON;
[objectManager addRequestDescriptor:requestDescriptor];
DABUser *user = [[DABUser alloc] init];
user.age = 20;
user.name = @"Charlie Brown";
[objectManager postObject:user path:@"users/123" parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
NSLog(@"Success!");
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
NSLog(@"Failed!");
}];
从上面的代码生成的 JSON 是通过请求正文发送的:
{ "age":20,"name":"Charlie Brown" }
当我有一个大对象树时,定义属性映射可能会变得很烦人(而且容易出错),其中有许多行与此示例类似的代码:
RKObjectMapping *userMapping = [RKObjectMapping requestMapping];
[userMapping addAttributeMappingsFromArray:@[ @"age", @"name"]];
有没有一种方法可以让 RestKit 从对象生成 JSON,而不需要所有这些设置?