0

すべてのプロパティとプロパティ コレクションを 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 を取得する方法はありますか?

4

1 に答える 1

1

「大きなオブジェクト ツリーがある場合、プロパティ マッピングの定義は、この例と同様のコード行が多数あるため、面倒 (かつエラーが発生しやすい) になる可能性があります。」

個人的には、これが最も簡単な方法であり、優れたアプローチだと思います。非常に多くのオブジェクト マッピングと複数のオブジェクト リンクを使用して、大きなオブジェクトへのオブジェクト マッピングを行ってきましたが、これが正しく処理する最も簡単な方法であることがわかりました。

于 2013-07-25T05:52:58.130 に答える