2016-08-26 4 views
0

Ich habe meine api Ergebnis wie folgt modelliert:JsonModel kann kein Array in JSON umwandeln geerbt Klasse jsonmodel

#import "PTPDestination.h" 
@interface PTPIndex : PTPBaseEntity 
@property (strong, nonatomic) NSNumber * citiesCount; 
@property (strong, nonatomic) NSNumber * hotelsCount; 
@property (strong, nonatomic) NSArray<PTPDestination *> * top_destinations; 
@end 

ich auch PTPDestination wie folgt modelliert:

@interface PTPDestination : PTPBaseEntity 
@property (assign, nonatomic) NSNumber * id; 
@property (assign, nonatomic) NSNumber * min_price; 
@property (assign, nonatomic) NSNumber * max_discount; 
@property (assign, nonatomic) NSString * title; 
@end 

Und ich rufe meine api mit AFNetworking wie folgt aus:

AFHTTPSessionManager * manager = [self createAPISessionManager]; 
[manager GET:[self createServiceUrlWithMethod:@"someURL"] parameters:nil progress:^(NSProgress * _Nonnull downloadProgress) { 
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { 
    NSError * error = nil; 
    PTPIndex * index = [[PTPIndex alloc] initWithDictionary:responseObject error:&error]; 
    if (error) { 
     callback (nil, [PTPApiCenteralizedErrorHandler getErrorFromApiError:error task:task responseObject:responseObject]); 
     return; 
    } 
    callback (index, nil); 
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { 
    callback (nil, [PTPApiCenteralizedErrorHandler getErrorFromApiError:error task:task]); 
}]; 

Das Problem ist, mit Reihe von Zielen. Ich weiß nicht, warum das Array nicht in PTPDestination-Objekt konvertiert wird und es als ein Array von NSDictionaries bleibt.

Warum passiert das und wie kann ich ein Array meiner benutzerdefinierten Klasse haben?

+0

Haben Sie ein Beispiel für die JSON-Nutzlast, die von Ihrem Server zurückkommt? –

+0

@CraigOtis Ich nenne diese URL ==> www.pintapin.com/service/index/mobile – aakpro

+0

Wie sieht 'PTPBaseEntity' aus? Erweitert es auch 'JSONModel'? –

Antwort

0

Nein, JSON-Modell Konvertiert das Array auch in JSONObject, wenn Sie auf die Eigenschaften der PTPDestination-Klasse zugreifen möchten.

PTPIndex Klasse

#import "JSONModel.h" 
@interface PTPIndex : JSONModel 
@property (strong, nonatomic) NSNumber * citiesCount; 
@property (strong, nonatomic) NSNumber * hotelsCount; 
@property (strong, nonatomic) NSArray<PTPDestination *> * top_destinations; 
@end 

PPTPDestination Klasse

#import "JSONModel.h" 
@interface PTPDestination : JSONModel 
@property (assign, nonatomic) NSNumber * id; 
@property (assign, nonatomic) NSNumber * min_price; 
@property (assign, nonatomic) NSNumber * max_discount; 
@property (assign, nonatomic) NSString * title; 
@end 

NSDictionary "Daten" aus dem Netzwerk Antwort

PTPIndex *ptpInd = [[PTPIndex alloc] initWithDictionary:data error:&error]; 

die Gesamtzahl der PTPDestination finden und in der Schleife ausgeführt werden. Sie können auf das Objekt so zugreifen.

PTPDestination *ptpdest = [ptpInd PTPDestination[0]]; 
Verwandte Themen