Перекрытие - Отображение нескольких типов ответов сервера
Я не могу понять, как отобразить массив ответов, когда 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