0

我决定使用 Mantle 来使用一些 JSON 端点,但是 JSON 的结构会根据您是GETing 还是POSTing 对象而有所不同。以用户端点为例:

请求用户时,您会收到类似于以下内容的响应:

{
    "random_meta_data": "whatever",
    "etc.": "etc.",
    "payload": {
        "username": "username",
        "email": "username@email.com",
        "etc.": "etc."
    }
}

创建用户时,您需要发送如下内容:

{
    "username": "username",
    "email": "username@email.com",
    "etc.": "etc."
}

这不是一个很难解决的问题,但它似乎是一个足够常见的问题,Mantle应该能够为您解决它。

我知道我可以简单地用 初始化地幔模型dictionary[@"payload"],但是Overcoat会自动为我进行映射,如果我要手动进行,我将Overcoat不再利用。

所以我想知道是否有一种标准的方法可以用Mantleand/or解决这个问题Overcoat

4

1 回答 1

0

Overcoat您所描述的称为信封响应,您可以在README.md中阅读有关如何处理这些响应的信息:

https://github.com/Overcoat/Overcoat#envelop-and-error-responses

App.net 等其他服务使用信封响应,它是顶级 JSON 响应,包含请求的数据和其他元数据。对于此类服务,您必须创建自己的 OVCResponse 子类并指定数据密钥路径。

@interface AppDotNetResponse : OVCResponse
...
@end

@implementation AppDotNetResponse
+ (NSString *)resultKeyPathForJSONDictionary:(NSDictionary *)JSONDictionary 
{
    return @"data";
}
@end

然后,您可以通过覆盖 +responseClass 来指定要在客户端中使用的响应类。

+ (Class)responseClass {
    return [AppDotNetResponse class];
}
于 2015-12-04T14:22:38.467 回答