ios - 使用 RestKit 将大型对象以 JSON 形式发布

标签 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,而无需进行所有这些设置?

最佳答案

“当我有一个大型对象树时,定义属性映射可能会变得很烦人(并且容易出错),其中有许多行与此示例类似的代码:”

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

关于ios - 使用 RestKit 将大型对象以 JSON 形式发布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17847249/

相关文章:

iphone - RestKit - 向所有请求附加参数

ios - 应用程序 ID 名称和 bundle 标识符问题

ios - NSUserDefaults 是否包含值?

ios - 在 UITextView 中以大写形式显示文本并从 shouldChangeText 获取新文本保持原始文本和输入文本的大小写

objective-c - 自定义 UITableViewCell 中的属性未针对 UISearchDisplayController 的表进行初始化

ios - block 初始化的 ViewController 提前释放

ios - RestKit + MagicalRecord + Swift

java - LWJGL 鼠标不响应 Cocoa 模拟鼠标事件

ios - self.view.frame.size 在同一方向改变值

ios - RestKit-从(不是很好的RESTful)JSON响应映射多个实体