Перекрытие - Отображение нескольких типов ответов сервера

Я не могу понять, как отобразить массив ответов, когда JSON ответа имеет разные ключи конверта:

ПРИМЕР Ответы:

 "response": {
    "currencies": [
      {
        "id": 5,
        "name": "British Pound",
        "shortName": "GBP",
        "symbol": "£",
        "symbolPreceedsValue": true
      },
      {
        "id": 6,
        "name": "U.S. Dollar",
        "shortName": "USD",
        "symbol": "$",
        "symbolPreceedsValue": true
      },

{
  "response": {
    "countries": [
      {
        "id": 9,
        "name": "United Kingdom",
        "shortName": "GB",
        "isMajorMarket": true
      },
      {
        "id": 10,
        "name": "USA",
        "shortName": "US",
        "isMajorMarket": true
      },

Я настроил объект ServerResponse:

@implementation ServerResponse

+(NSString *)resultKeyPathForJSONDictionary:(NSDictionary *)JSONDictionary
{
    return @"response";
}

@end

// And setup what I believe to map the response for the Country
+ (NSDictionary *)responseClassesByResourcePath {
    return @{
             @"countries": [SPCCountry class]
             };
}

В результате ОДИН объект SPCCountry создается с нулевыми данными. Я хочу СПИСОК объектов SPCCountry / SCCurrency.

ОТВЕТ. Для каждого уникального пути ответа необходимо создать подкласс OCVResponse и вернуть класс и путь в методе класса:

+ (NSDictionary *)responseClassesByResourcePath {
    return @{
             @"/install": [ServerResponse class],
             @"/countries": [SPCCountryResponse class],
             @"/currencies": [SPCCurrencyResponse class]
             };

}

Реализация классов ответа должна только реализовать:

@implementation SPCCountryResponse

    +(NSString *)resultKeyPathForJSONDictionary:(NSDictionary *)JSONDictionary
    {
        return @"response.countries";
    }

@end

0 ответов

Другие вопросы по тегам