2016-08-26 5 views
0

나는 다음과 같은 내 API 결과를 모델링 한 jsonmodel하는 JSON의 배열을 변환 할 수 없습니다 AFNetworking like :JsonModel 상속 클래스

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]); 
}]; 

문제는 목적지 배열에 있습니다. 배열이 PTPDestination 객체로 변환되지 않고 NSDictionaries의 배열로 유지되는 이유를 모르겠습니다.

왜 이런 일이 발생하고 사용자 정의 클래스 배열을 사용할 수 있습니까?

+0

서버에서 JSON 페이로드가 다시 수신되는 예가 있습니까? –

+0

@CraigOtis이 url ==> www.pintapin.com/service/index/mobile이라고 부릅니다. – aakpro

+0

'PTPBaseEntity'는 어떻게 생겼습니까? 'JSONModel'도 확장합니까? –

답변

0

아니요, JSON 모델 또한 PTPDestination 클래스 속성에 액세스하려는 경우 배열을 JSONObject로 변환합니다.

PTPIndex 클래스 네트워크 응답

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

에서

#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 "데이터"PTPDestination의 총 수를 찾아 루프에서 실행

#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 클래스입니다. 이렇게 개체에 액세스 할 수 있습니다.

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