문제

나는 ASP MVC API 에이 JSON이 있습니다. 나는 인 모더와 로트 모델이 있습니다.

하지만 내가 전화할 때

_InvFeed = [[InvModel alloc] initFromURLWithString:@"http://192.168.1.206/service/api/dto/inventory/1?p=Red%20Globe"
                                        completion:^(JSONModel *model, JSONModelError *err) 
        {
            NSLog(@"Inventory: %@", _InvFeed );
            NSLog(@"Error: %@",err);
        }];

이 오류를 파악할 수 없습니다.

오류:오류 도메인=JSONModelErrorDomain 코드=1 "잘못된 JSON 데이터:initWithDictionary:error를 사용하여 JSONModel 객체 초기화를 시도합니다.그러나 사전 매개변수는 'NSDictionary'가 아닙니다."
UserInfo=0x109075ff0 {NSLocalizedDescription=잘못된 JSON 데이터:initWithDictionary:error를 사용하여 JSONModel 객체 초기화를 시도합니다.그러나 사전 매개 변수는 'nsdictionary'가 아니었다., KjsonModelKeyPath = lotdto}

JSONData

다음은 JSONModel입니다.LotDTO

#import "JSONModel.h"

@interface InvLotModel : JSONModel
@property (assign, nonatomic) int lotid;
@property (strong, nonatomic) NSDate* expdate;
@property (strong, nonatomic) NSString* lotserial;
@property (strong, nonatomic) NSDate* lastupddate;
@property (strong, nonatomic) NSString<Optional>* providerlotserial;
@property (assign, nonatomic) NSDecimal* qtyoriginal;
@property (assign, nonatomic) NSDecimal* qtyallocated;
@property (assign, nonatomic) NSDecimal* qtyavailable;
@property (assign, nonatomic) NSDecimal* qtyonhand;
@property (strong, nonatomic) NSDate* receiptdate;
@property (strong, nonatomic) NSString* linecomment;
@property (assign, nonatomic) NSDecimal* unitcost;
@property (strong, nonatomic) NSString* warehouse;
@end

그리고 여기에 인벤토리 모델이 있습니다.

#import "JSONModel.h"
#import "InvLotModel.h"
@protocol InvModel @end
@interface InvModel : JSONModel
@property (assign, nonatomic) int id;
@property (strong, nonatomic) NSString* itemid;
@property (strong, nonatomic) NSString* description;
@property (strong, nonatomic) NSDate* createdate;
@property (strong, nonatomic) NSString* createuser;
@property (assign, nonatomic) float lastcost;
@property (assign, nonatomic) BOOL monitorlevel;
@property (assign, nonatomic) int minlevel;
@property (assign, nonatomic) int maxlevel;
@property (strong, nonatomic) NSString* gtin;
@property (assign, nonatomic) float weight;
@property (strong, nonatomic) NSString* uom;
@property (strong, nonatomic) NSString* sizes;
@property (strong, nonatomic) NSString* variety;
@property (strong, nonatomic) NSString <Optional>* bag;
@property (strong, nonatomic) NSString* style;
@property (strong, nonatomic) NSString* box;
@property (strong, nonatomic) NSString* label;
@property (strong, nonatomic) NSString* commodity;

@property (strong, nonatomic) InvLotModel* LotDTO;
@end
도움이 되었습니까?

해결책

두 가지 문제가 있습니다.

1) InvModel 수업, 요 정의했습니다 LotDTO 배열이 아닌 단일 개체로.

2) 게시한 JSON 응답에서 다음 구문은 LotDTO 나에게 유효한 JSON이 아닌 것 같습니다.의 배열인 것 같습니다. LotDTO 객체이지만 JSON 배열의 구문을 따르지 않습니다(예를 들어 확인할 수 있음). 여기).

다른 팁

확장 속성을 Ignore로 표시하십시오.나는 그런 문제가 모델을 복사하려고 시도했다.

이를 대체하십시오

@property (strong, nonatomic) InvLotModel* LotDTO;
.

와 함께
@property (strong, nonatomic) NSArray<InvLotModel,ConvertOnDemand>* LotDTO;
.

JSONMODEL의 관리자로서 ConvertonDemand를 사용하여 튜토리얼 중 하나에서 NsArray를 JSONMODELARRAY로 변환하여

이 도움이 될 수 있습니다 : 여기를 클릭하십시오

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top