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もう利用していません。

Mantleそれで、これをand/orで解決する標準的な方法があるかどうか疑問に思っていOvercoatますか?

4

1 に答える 1

0

あなたが説明しているものはエンベロープ応答と呼ばれ、OvercoatREADME.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 に答える