iOS: используйте Mantle для преобразования массива объектов - PullRequest
0 голосов
/ 28 октября 2018

Я использую Mantle для сериализации строк json.

Это json, который сервер возвращает

"data": {
        "rows": {
        "0": {
            "id": 1,
            "rate": "13",
            "cycle": "22",
            "amount": "16",
            "name": "Nikita Kulas"
        },
        "1": {
            "id": 2,
            "rate": "14",
            "cycle": "25",
            "amount": "22",
            "name": "Nikita Kulas"
        },
        "2": {
            "id": 3,
            "rate": "7",
            "cycle": "8",
            "amount": "4",
            "name": "Nikita Kulas"
        },
        "4": {
            "id": 10,
            "rate": "18",
            "cycle": "24",
            "amount": "5",
            "name": "Nikita Kulas"
        }
    }
}

И класс модели:

@interface QuantProduct : MTLModel <MTLJSONSerializing>

@property (nonatomic, copy, readonly) NSNumber *qpId;
@property (nonatomic, copy, readonly) NSString *requirement;
@property (nonatomic, copy, readonly) NSString *period;
@property (nonatomic, copy, readonly) NSString *rate;
@property (nonatomic, copy, readonly) NSString *name;

@end

@interface QuantProductList : MTLModel <MTLJSONSerializing>

@property (nonatomic, copy) NSArray<QuantProduct *> *quantProductList;

@end

@implementation QuantProduct


+ (NSDictionary *)JSONKeyPathsByPropertyKey {
    return @{
             @"qpId": @"id",
             @"name": @"name",
             @"requirement": @"amount",
             @"period": @"cycle",
             @"rate": @"rate"
             };
}

@end

@implementation QuantProductList

+ (NSDictionary *)JSONKeyPathsByPropertyKey {
    return @{
             @"quantProductList" : @"rows"
             };
}

+ (NSValueTransformer *)quantProductListJSONTransformer {
    return [MTLJSONAdapter arrayTransformerWithModelClass:[QuantProduct class]];
}


@end

IЯ пытался использовать arrayTransformerWithModelClass, но это не прямой массив.

В json ключ индекса не является фиксированным числом, так как я должен изменить метод JSONTransformer для прямой сериализации json?

Спасибо

...