>  Q&A  >  본문

iOS 在jsonModel中如何获取嵌套数组的数据?

小弟的model定义如下:

@class cartitems;
@class giftItems;
@class specification;
@class promotions;



@interface THWShoppingCartModel : JSONModel
@property (nonatomic, assign) NSInteger discountPrice;//优惠立减

@property (nonatomic, assign) NSInteger quantity;//商品数量

@property (nonatomic, assign) NSInteger id;//ID

@property (nonatomic, assign) NSInteger effectiveQuantity;//有效商品数

@property (nonatomic, assign) NSInteger freightPrice;//运费

@property (nonatomic, assign) NSInteger effectivePrice;//有效金额

@property (nonatomic, strong) NSArray<giftItems*> *giftItems; //订单项

@property (nonatomic, strong) NSArray<cartitems*> *cartItems; //礼物项

@property (nonatomic, assign) NSInteger effectivePoint;//有效商品积分
@end


@interface cartitems : JSONModel

@property (nonatomic, assign) NSString* id; //订单ID

@property (nonatomic, assign) NSString *productId; //shangpinID

@property (nonatomic, copy) NSString *unit;//单位

@property (nonatomic, assign) NSString *quantity; //数量

@property (nonatomic, assign) NSString *discount;//折扣金额

@property (nonatomic, copy) NSString *tenantName;//商家名称

@property (nonatomic, copy) NSString *tenantId;//商家ID

@property (nonatomic, assign) NSString *price;//折后单价

@property (nonatomic, assign) NSString *subTotal;//金额小计

@property (nonatomic, copy) NSString *fullName;//全名

@property (nonatomic, copy) NSString *thumbnail;//缩略图

@property (nonatomic, strong) NSArray<specification*> *specification; //促销

@property (nonatomic, strong) NSArray<promotions*> *promotions; //规格

@property (nonatomic, assign) BOOL selected; //是否选择

@property (nonatomic, copy) NSString *name;//规格值

@property(nonatomic,copy) NSString *coupon;//是否可领卷

@end


@interface giftItems : JSONModel
@property(copy,nonatomic)NSString *id    ;                    //ID
@property (nonatomic, assign) NSUInteger productId    ;        //商品Id
@property(copy,nonatomic)NSString * fullName;                //全名
@property(copy,nonatomic)NSString *unit;                    //单位
@property(copy,nonatomic)NSString *thumbnail;                //缩略图
@property(copy,nonatomic)NSString *quantity;                //数量
@end


@interface specification : JSONModel
@property (nonatomic, assign) NSUInteger id;            //规格Id
@property(copy,nonatomic)NSString *name;                //规格名称
@end


@interface promotions : JSONModel
@property (nonatomic, assign) NSUInteger id;            //促销Id
@property(copy,nonatomic)NSString *name;                //促销名称
@end

现在需要用:

-(void)parseShoppingCartModelProfile:(NSArray*) cartItems
{
    if(!_moduleDic)
        _moduleDic = [NSMutableDictionary new];
    for (cartitems *item in cartItems) {
        @try {
            NSString *tentid = [NSString stringWithFormat:@"%@",item.tenantId];
            if(![_moduleDic.allKeys containsObject:tentid])
            {
                [_moduleDic setValue:item forKey:tentid];
            }
            else
            {
                [((NSMutableArray *)_moduleDic[tentid]) addObject:item];
            }
        } @catch (NSException *exception) {
            NSLog(@"%@",exception.description);
        }
    }
}

这个方法获取循环遍历处理THWShoppingCartModel NSArray<cartitems> cartItems 中每个成员的数据,但是无论如何都获取不到item.tenantId和其他cartItems model的数据,总是提示: -[__NSCFDictionary tenantId]: unrecognized selector sent to instance 0x7fdf9e0a3fa0,请问大神门如何处理?

巴扎黑巴扎黑2764일 전738

모든 응답(4)나는 대답할 것이다

  • ringa_lee

    ringa_lee2017-04-18 09:29:03

    포스터의 모델이 모두 JSONModel을 상속하는 것으로 확인됩니다. 이것은 타사 구문 분석 도구인가요? 그렇다면 2층의 의미여야 합니다. 데이터를 얻기 위해 트래버스할 필요가 없습니다. 작동하지 않으면 중단점을 따라 데이터를 인쇄할 수 있습니다. 보다.

    회신하다
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 09:29:03

    우선 오류 내용에 따르면 프로젝트의 cartItems에 있는 각 요소가 NSDictionary.

    이라는 것이 상대적으로 분명합니다.

    해당 데이터 소스의 정확성을 찾아보는 것을 권장합니다.

    회신하다
    0
  • 巴扎黑

    巴扎黑2017-04-18 09:29:03

    1. 사전 중의 사전입니다

    2. 사전 안의 배열입니다

    특정 장소에서 사용하는 경우에는 가장 바깥쪽의 jsonmodel 객체를 직접 초기화하면 됩니다. 내부적으로 매핑됩니다

    회신하다
    0
  • 黄舟

    黄舟2017-04-18 09:29:03

    jsonmodel이 때때로 값을 할당하지 못하는 것을 발견했습니다. 다른 자동 구문 분석 라이브러리를 사용하는 것이 좋습니다

    회신하다
    0
  • 취소회신하다