解决afnetworking传递二维数组失败的问题

之前在一个项目里面,需要通过POST方式传递一个二维数组的参数,却一直失败,翻查了很多资料,最后发现可以通过编辑源码的方式来解决问题,方法很简单:

  • 打开AFURLRequestSerialization.m文件
  • 找到AFQueryStringPairsFromKeyAndValue方法
  • 将中间一个else if语句中的内容改成以下代码

原来:

else if ([value isKindOfClass:[NSArray class]]) {
        NSArray *array = value;
        for (id nestedValue in array) {
            [mutableQueryStringComponents addObjectsFromArray:AFQueryStringPairsFromKeyAndValue([NSString stringWithFormat:@"%@[]", key], nestedValue)];
        }
    }

修改后:

else if ([value isKindOfClass:[NSArray class]]) {
        NSArray *array = value;
        for (id nestedValue in array) {
            NSInteger index = [array indexOfObject:nestedValue];
            [mutableQueryStringComponents addObjectsFromArray:AFQueryStringPairsFromKeyAndValue([NSString stringWithFormat:@"%@[%ld]", key, index], nestedValue)];
        }
    }