當(dāng)前位置:首頁 > IT技術(shù) > 移動(dòng)平臺(tái) > 正文

iOS Q&A匯總【本博客精品資源相關(guān)問題和解決方案】(持續(xù)更新)
2021-08-08 17:42:22

?

文章目錄

  • 引言
  • I、簽名數(shù)組ASCII碼排序優(yōu)化
    • 1.1 優(yōu)化數(shù)組元素的排序
    • 1.2 新增集合元素排序:
    • 1.3 微信支付參數(shù)值為空不參與排序的處理方案
  • II、編譯相關(guān)問題
    • 2.1 為什么我下載demo后,在xcode12中允許報(bào)錯(cuò):library not found for -lAXIndicatorView;請(qǐng)問怎么解決?

?

引言

匯總本博客精品資源相關(guān)問題和解決方案(持續(xù)更新)

I、簽名數(shù)組ASCII碼排序優(yōu)化

1.1 優(yōu)化數(shù)組元素的排序

  • 用戶你好,針對(duì)你的問題,我修改內(nèi)容如下
    iOS Q&A匯總【本博客精品資源相關(guān)問題和解決方案】(持續(xù)更新)_字符串

數(shù)組的地方,我的規(guī)則是[] 表示數(shù)組,數(shù)組元素是用,分隔[,,,] 進(jìn)行遞歸拼接的。
你認(rèn)為數(shù)組ASCII碼排序的地方是錯(cuò)誤的話,你可以打印排序之后的字符串,看排序與你服務(wù)側(cè)的拼接規(guī)則哪里不一樣。把規(guī)則修改為與后臺(tái)的數(shù)組排序規(guī)則一致即可。

/**
 - 處理key對(duì)應(yīng)的Value是數(shù)組的情況

 */
+ (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];
                             
                             
                    
                             
                    
                    
                    
                }
        
                // 數(shù)組就[]
                
                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;
    
    
    
}

例子:編輯門店的商品的價(jià)格
請(qǐng)求報(bào)文:

{
  "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 新增集合元素排序:

對(duì)于數(shù)組排序,我的初步想法是,先按照數(shù)組元素的class類型進(jìn)行分組,其中的子數(shù)組是字符串類型的話,就對(duì)其進(jìn)行排序之后再重新組合到新的數(shù)組中。然后再進(jìn)行遍歷遞歸拼接

/**
 
 1、新增集合元素排序:對(duì)于數(shù)組排序,我的初步想法是,先按照數(shù)組元素的class類型進(jìn)行分組,其中的子數(shù)組是字符串類型的話,就對(duì)其進(jìn)行排序之后再重新組合到新的數(shù)組中。然后再進(jìn)行遍歷遞歸拼接

 */
+ (NSMutableArray *)sortedArrBykey:(NSArray *)array {
    
    
    
        
    // 對(duì)數(shù)組先按照class類型進(jìn)行排序
        
        //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)按照日期進(jìn)行分組
        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 微信支付參數(shù)值為空不參與排序的處理方案

參數(shù)為空的 只要排序之前從字典移除即可。

規(guī)則的原因 :簽名只對(duì)針對(duì)重要的字段,值可空的參數(shù)可不必參加

II、編譯相關(guān)問題

2.1 為什么我下載demo后,在xcode12中允許報(bào)錯(cuò):library not found for -lAXIndicatorView;請(qǐng)問怎么解決?

iOS Q&A匯總【本博客精品資源相關(guān)問題和解決方案】(持續(xù)更新)_問題與解決方案_02

原因:這是找不到 CocoaPods庫 AXIndicatorView。是 AXWebViewController庫依賴于它

iOS Q&A匯總【本博客精品資源相關(guān)問題和解決方案】(持續(xù)更新)_iOS_03
iOS Q&A匯總【本博客精品資源相關(guān)問題和解決方案】(持續(xù)更新)_問題與解決方案_04

  • 解決方法: 你更新 pod ‘AXWebViewController’ 即可。

1、只更新指定的庫,其它庫忽略:pod update AXWebViewController --verbose --repo-update
2、pod update會(huì)更新所有的類庫,獲取最新版本的類庫

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

開通會(huì)員,享受整站包年服務(wù)立即開通 >