Restkit的RequestMapping

发布于 2022-09-01 19:42:11 字数 2131 浏览 25 评论 0

官网上面只介绍了

{
    a : "a",
    b : "b"
}

的写法

RKObjectMapping *requestMapping = [RKObjectMapping requestMapping];
[requestMapping addAttributeMappingsFromDictionary:@{@"entityId" : @"id"}];

但是没有介绍多层嵌套的JSON用什么方式,类似于

{
    entity: {
        id: "xxxxxxxxx",
        model : {
            a : "a",
            b : "b"           
        }
    }
}

创建的两个模型文件:

@interface Entity : NSObject
@property (strong, nonatomic) NSString *entityId;
@property (strong, nonatomic) NSObject *model;
@end
@interface Model : NSObject
@property (strong, nonatomic) NSString *a;
@property (strong, nonatomic) NSString *b;
@end

我想当然按照ResponseMapping的写法,以下是我的Mapping代码

RKObjectManager *objectManager = [RKObjectManager sharedManager];
RKObjectMapping *requestMapping = [RKObjectMapping requestMapping];
[requestMapping addAttributeMappingsFromDictionary:@{@"entityId" : @"id"}];
RKObjectMapping *modelMapping = [RKObjectMapping requestMapping];
[modelMapping addAttributeMappingsFromDictionary:@{@"a" : @"b"}];
RKRelationshipMapping *modelToEntityMapping = [RKRelationshipMapping relationshipMappingFromKeyPath:@"model" toKeyPath:@"model" withMapping:modelMapping];
[requestMapping addPropertyMapping:modelToEntityMapping];
RKRequestDescriptor *requestDescriptor = [RKRequestDescriptor requestDescriptorWithMapping:requestMapping objectClass:[Entity class] rootKeyPath:nil method:RKRequestMethodAny];
[objectManager addRequestDescriptor:requestDescriptor];

我这么定义Post的Object

Entity *entity = [Entity new];
entity.entityId = @"/example/entityId";
Model *exampleModel = [ExampleModel new];
exampleModel.a = @"a";
exampleModel.b = @"b";
entity.model = exampleModel;

可是在服务器上面输出的是这样的:

{ id: '/example/entityId', 'model[a]': 'a', 'model[b]': 'b' }

请问RestKit的ResquestMapping的Relationship应该怎么定义?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

清旖 2022-09-08 19:42:11

reskit 复杂又麻烦,还需要自己定义一堆关系。。真的非常难用,劝早弃

我建议用 AFNetworking + JosnModel。。
如果你要存储的话 AFNetworking + Realm 也可以。。

都不用自己去定义关系。。写完属性就自动适配。

clipboard.png

clipboard.png

你看我这样多省事儿。。restkit 真的可以弃了。。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文