すべてのプロパティとプロパティ コレクションを RestKit に手動で指定することなく、大きな NSObject 派生オブジェクト構造を POST する方法はありますか?
これは単一のクラスを持つ単純な例ですが、DABUser
オブジェクト、コレクションでもあるプロパティが含まれていて、より大きなオブジェクト ツリーを表すために同じものが多く含まれていると想像してください。
POSTするクラス:
@interface DABUser : NSObject
@property (nonatomic) int age;
@property (copy, nonatomic) NSString *name;
@end
DABUser
オブジェクトを POST :
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"]];
このすべてのセットアップなしで、オブジェクトから JSON を生成するために RestKit を取得する方法はありますか?