小弟的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; //订单项 @property (nonatomic, strong) NSArray *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; //促销 @property (nonatomic, strong) NSArray *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-[__NSCFDictionary tenantId]: unrecognized selector sent to instance 0x7fdf9e0a3fa0
,请问大神门如何处理?
I see that the poster’s models all inherit JSONModel. Is this a third-party parsing tool? If so, it should be the meaning of the second floor. There is no need for you to traverse to get the data. It should be mapped for you. If it doesn't work, you can follow the breakpoint and print the data to see.
First of all, according to the error content, it is relatively clear that each element in cartItems in your project is a
NSDictionary
.It is recommended that you look up for the correctness of the corresponding data source.
This is a dictionary within a dictionary
This is an array inside a dictionary
When used in specific places, just initialize the outermost jsonmodel object directly. They will do internal mapping
I found that jsonmodel sometimes fails to assign values. It is recommended to use other automatic parsing libraries