文章目录
- 引言
- I、签名数组ASCII码排序优化
-
- 1.1 优化数组元素的排序
- 1.2 新增集合元素排序:
- 1.3 微信支付参数值为空不参与排序的处理方案
- II、编译相关问题
-
- 2.1 为什么我下载demo后,在xcode12中允许报错:library not found for -lAXIndicatorView;请问怎么解决?
引言
汇总本博客精品资源相关问题和解决方案(持续更新)
I、签名数组ASCII码排序优化1.1 优化数组元素的排序
- 用户你好,针对你的问题,我修改内容如下
数组的地方,我的规则是[] 表示数组,数组元素是用,分隔[,,,] 进行递归拼接的。
你认为数组ASCII码排序的地方是错误的话,你可以打印排序之后的字符串,看排序与你服务侧的拼接规则哪里不一样。把规则修改为与后台的数组排序规则一致即可。
/** - 处理key对应的Value是数组的情况 */ + (NSString *)sortedDictionaryArr:(NSArray *)arr { NSMutableString *contentString =[NSMutableString string]; #pragma mark - ******** 可选 arr = [self sortedArrBykey:sortedArray];// for ( id obj in arr ) { NSString * tmp = @""; if(contentString.length<1 || [contentString isEqualToString:@""]){// } else{ [contentString appendString:@","]; } if( [obj isKindOfClass:NSDictionary.class]){ tmp = [self sortedDictionary:obj]; } // 数组就[] else if( [obj isKindOfClass:NSArray.class]){ tmp = [self sortedDictionaryArr:obj]; tmp = [NSString stringWithFormat:@"%@%@%@",@"{",tmp,@"}"]; } else{ tmp= obj; } [contentString appendFormat:@"%@",tmp]; } contentString = [NSString stringWithFormat:@"%@%@%@",@"[",contentString,@"]"]; return contentString; }
例子:编辑门店的商品的价格
请求报文:
{ "adjustStocks" : [ { "nnewStockNum" : "0", "productId" : "1280072986512433152", "newStockNum" : "0", "oldStockNum" : "0", "storeId" : "25063", "productSkuId" : "1280072986516627456", "batchNo" : "" } ], "modifyPrices" : [ { "tagId" : "25063", "productNewPrice" : "5", "productSkuId" : "1280072986516627456", "type" : "1", "productId" : "1280072986512433152", "productOldPrice" : "33" } ] }
签名元字符串的ASCII码排序
adjustStocks=[batchNo=&newStockNum=0&nnewStockNum=0&oldStockNum=0&productId=1280072986512433152&productSkuId=1280072986516627456&storeId=25063]&modifyPrices=[productId=1280072986512433152&productNewPrice=55&productOldPrice=5&productSkuId=1280072986516627456&tagId=25063&type=1]&appsecret=4f7b71
1.2 新增集合元素排序:
对于数组排序,我的初步想法是,先按照数组元素的class类型进行分组,其中的子数组是字符串类型的话,就对其进行排序之后再重新组合到新的数组中。然后再进行遍历递归拼接
/** 1、新增集合元素排序:对于数组排序,我的初步想法是,先按照数组元素的class类型进行分组,其中的子数组是字符串类型的话,就对其进行排序之后再重新组合到新的数组中。然后再进行遍历递归拼接 */ + (NSMutableArray *)sortedArrBykey:(NSArray *)array { // 对数组先按照class类型进行排序 //1)取出分组 // NSArray *arDistinct = [array valueForKeyPath:@"@distinctUnionOfObjects.class"];// 无法获取到字典class类型 // NSMutableArray *classArr = [NSMutableArray arrayWithArray:arDistinct]; NSMutableArray *strclassArr = [NSMutableArray array]; NSMutableArray *nostrclassArr = [NSMutableArray array]; for (NSObject* obj in array) { if([obj isKindOfClass:NSString.class]){ [strclassArr addObject:obj]; }else{ [nostrclassArr addObject:obj]; } } // 4)按照日期进行分组 NSMutableArray* sortedArray = [NSMutableArray array]; strclassArr = [strclassArr sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2){ return [obj1 compare:obj2 options:NSNumericSearch]; }]; [sortedArray addObjectsFromArray:strclassArr]; [sortedArray addObjectsFromArray:nostrclassArr]; return sortedArray; }
1.3 微信支付参数值为空不参与排序的处理方案
参数为空的 只要排序之前从字典移除即可。
II、编译相关问题规则的原因 :签名只对针对重要的字段,值可空的参数可不必参加
2.1 为什么我下载demo后,在xcode12中允许报错:library not found for -lAXIndicatorView;请问怎么解决?
原因:这是找不到 CocoaPods库 AXIndicatorView。是 AXWebViewController库依赖于它
- 解决方法: 你更新 pod ‘AXWebViewController’ 即可。
1、只更新指定的库,其它库忽略:pod update AXWebViewController --verbose --repo-update
2、pod update会更新所有的类库,获取最新版本的类库
exit 0% ➜ retail git:(develop) ✗ cat ~/bin/knpod #!/bin/sh #该命令只安装新添加的库,已更新的库忽略 pod install --verbose --no-repo-update #该命令只更新指定的库,其它库忽略 #pod update 库名 --verbose --no-repo-update exit 0% ➜ retail git:(develop) ✗
本文摘自 :https://blog.51cto.com/i