• 當前位置:首頁 > IT技術 > 移動平臺 > 正文

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

    ?

    文章目錄

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

    ?

    引言

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

    I、簽名數組ASCII碼排序優化

    1.1 優化數組元素的排序

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

    數組的地方,我的規則是[] 表示數組,數組元素是用,分隔[,,,] 進行遞歸拼接的。
    你認為數組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;請問怎么解決?

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

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

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

    • 解決方法: 你更新 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

    開通會員,享受整站包年服務
    国产呦精品一区二区三区网站|久久www免费人咸|精品无码人妻一区二区|久99久热只有精品国产15|中文字幕亚洲无线码