Question

J'essaie de convertir ce Json à un modèle:

  [
    {
        "status": "Top-up done",
        "amount": "25.00",
        "amount_ex_vat": "20.66",
        "executed_on": "2014-07-28 20:21:33",
        "method": "Bancontact/Mister Cash",
        "payment_received_on": "2014-07-28 20:21:29"
    },
    {
        "status": "Top-up done",
        "amount": "15.00",
        "amount_ex_vat": "12.40",
        "executed_on": "2014-05-26 19:41:36",
        "method": "PayPal",
        "payment_received_on": "2014-05-26 19:41:31"
    },
    {
        "status": "Top-up done",
        "amount": "10.00",
        "amount_ex_vat": "8.26",
        "executed_on": "2014-02-26 20:43:39",
        "method": "PayPal",
        "payment_received_on": "2014-02-26 20:43:35"
    },
    {
        "status": "Top-up done",
        "amount": "15.00",
        "amount_ex_vat": "12.40",
        "executed_on": "2014-01-18 12:43:09",
        "method": "PayPal",
        "payment_received_on": "2014-01-18 12:43:06"
    }
]

Ceci est ma classe:

@interface TopupHistory : MTLModel 
@property (strong, nonatomic) NSString * amount;
@property (strong, nonatomic) NSString * executed_on;
@property (strong, nonatomic) NSString * method;
@end

@implementation TopupHistory

(NSDictionary *)JSONKeyPathsByPropertyKey { return @{ @"amount": @"amount", @"executed_on": @"executed_on", @"method": @"method", }; } @end

pensé si je nommé les Vares exactement les mêmes, il ne serait pas nécessaire de mettre en œuvre JSONKATHATHAATH, mais je l'ai fait.

Et ceci est ma méthode pour convertir:

-(void) convertFrom:(id) responseObject toModel:(Class) model resultBlock: (NetworkBlock)resultBlock
{
NSError * didFail;
id result = [MTLJSONAdapter modelOfClass:model fromJSONDictionary:responseObject error:&didFail];
if (!didFail) {
resultBlock(result,nil);
}
else
{
NSLog(@"Couldn't convert app infos JSON to model: %@", didFail);
resultBlock(nil,didFail);
}
}

Où le modèle est mon nom de classe et ResponsibleObject est juste un objet d'identification que j'ai rempli avec Afnetworking.

Je reçois toujours cette erreur:

Domain=MTLJSONAdapterErrorDomain Code=3 "Missing JSON dictionary" UserInfo=0x913a690 {NSLocalizedFailureReason=TopupHistory could not be created because an invalid JSON dictionary was provided: __NSCFArray, NSLocalizedDescription=Missing JSON dictionary}
2014-07-29 13:11:55.780 test Info[10953:60b] Missing JSON dictionary

Était-ce utile?

La solution

Votre réponse est une gamme de dictionnaires, vous devez donc utiliser Méthode MTLJSONADAPTER MODECLASSCLASS: FromJsonarray: Erreur: Pour les convertir en un tableau de modèles de mante.

Votre code doit être changé comme ci-dessous:

-(void) convertFrom:(id) responseObject toModel:(Class) model resultBlock: (NetworkBlock)resultBlock
{
NSError * didFail;
id result = [MTLJSONAdapter modelsOfClass:model fromJSONArray:responseObject error:&didFail];
//...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top