使用RestKit将大对象作为JSON发布

时间:2013-07-25 00:59:02

标签: ios objective-c restkit

有没有办法POST大型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,而不进行所有这些设置?

1 个答案:

答案 0 :(得分:1)

"当我有一个大型对象树时,定义属性映射可能会让人厌烦(并且容易出错),这个例子中有许多类似代码的行:" s

我个人认为这是最简单的方法和一种好的方法。我已经完成了对象映射到具有如此多对象映射和多个对象链接的大对象,并发现这是正确处理它的最简单方法