开发者社区> 问答> 正文

ios 网络请求数据的类型问题!! 400 请求报错 

//请求
    [[MZHomeRequest shartHomeRequest] proShopCatReturn:^(MZHomeRequest *home, id shopCatData) {
        DLog(@"shop Cat %@", shopCatData);
        
        for (NSMutableDictionary *shopDic in shopCatData) {
            NSMutableArray *proArray = shopDic[@"itemList"];
            for ([color=#FF6600]NSMutableDictionary [/color]*proDic in proArray) {
                [self.proArray addObject:proDic];
            }
            [self.shopArray addObject:shopDic];
        }
        self.navigationItem.title = [NSString stringWithFormat:@"购物车(%ld)",self.proArray.count];
        //数组中的字典返回值是__NSCFDictionary,但是返回的是可变字典啊
        DLog(@"/////%@", [self.shopArray[0][@"itemList"][0] class])
        [self.tableView reloadData];
    }];
数据的结构

        itemList =         (

                        {

                cartId = 7;

                itemId = 7;

                skuId = 7;

                skuNum = 1;

                stock = 100000;

                tbPrice = 110;

            }

        )

我想在其他方法修改它的值,但是提示类型是不可变字典......怎么办!!!求大牛给点建议

展开
收起
kun坤 2020-05-29 22:53:00 812 0
1 条回答
写回答
取消 提交回答
  • 挖个坟,我也是遇到了此问题,拿到数据后,后面无论深拷贝抑或强转等等,都不行。
    后来发现是响应序列器的设置问题,
    我用的是AFNetworking2.5的,原来响应序列器设置为AFHTTPResponseSerializer *responseSerializer = [AFJSONResponseSerializer serializer];//此处返回的结果是不可改的;
     需要设置为才可以:AFHTTPResponseSerializer *responseSerializer = [AFJSONResponseSerializer serializerWithReadingOptions: NSJSONReadingMutableContainers];//允许返回的结果可改。
    不知你用的是哪个网络组件,也许可以设置的。 ######To  NSMutableDictionary######

    引用来自“AllanChan”的评论

    To  NSMutableDictionary 什么意思??能详细点么###### 将你的不可变字典转成NSMutableDictionary ######

    引用来自“AllanChan”的评论

    将你的不可变字典转成NSMutableDictionary 我试了好多方法都不行.....for-in里面改为可变的,在用的的时候强转成可变的,都是不行 ###### 你得Respone 的class是什么? ######

    引用来自“AllanChan”的评论

    你得Respone 的class是什么? __NSCFDictionary 修改数据就报错 *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[__NSCFDictionary setObject:forKey:]: mutating method sent to immutable object' ######用可变字典######

    引用来自“zmingchun”的评论

    挖个坟,我也是遇到了此问题,拿到数据后,后面无论深拷贝抑或强转等等,都不行。 后来发现是响应序列器的设置问题, 我用的是AFNetworking2.5的,原来响应序列器设置为AFHTTPResponseSerializer *responseSerializer = [AFJSONResponseSerializer serializer];//此处返回的结果是不可改的;  需要设置为才可以:AFHTTPResponseSerializer *responseSerializer = [AFJSONResponseSerializer serializerWithReadingOptions: NSJSONReadingMutableContainers];//允许返回的结果可改。 不知你用的是哪个网络组件,也许可以设置的。 可以的,谢谢
    2020-05-29 22:53:07
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
手淘iOS性能优化探索 立即下载
From Java/Android to Swift iOS 立即下载
深入剖析iOS性能优化 立即下载