[iOS]---url拼接參數(shù)封裝方法

近期項目中的一個URL拼接的地方出現(xiàn)了問題,跟接口方約定好規(guī)則--

他提供的原始URL是帶“?”的,我們直接拼接參數(shù)就好了,

但是他們更新接口后,提供的原始URL不帶”?“了,導致線上出現(xiàn)問題。

在新版本解決這個問題很簡單,加上“?”就可以了,可是老版本怎么辦? 或者以后他們的規(guī)則又變了怎么辦?

最終考慮做一個URL拼接的封裝,實現(xiàn)各種情況下拼接參數(shù)不會出問題:
封裝法法如下:

NSString+Extention.h

  #import <Foundation/Foundation.h>

@interface NSString (Extention)
-(NSString *)urlAddCompnentForValue:(NSString *)value key:  (NSString *)key;
@end

NSString+Extention.m

#import "NSString+Extention.h"

@implementation NSString (Extention)
-(NSString *)urlAddCompnentForValue:(NSString *)value key:(NSString *)key{
    
    NSMutableString *string = [[NSMutableString alloc]initWithString:self];
    @try {
        NSRange range = [string rangeOfString:@"?"];
        if (range.location != NSNotFound) {//找到了
            //如果?是最后一個直接拼接參數(shù)
            if (string.length == (range.location + range.length)) {
                NSLog(@"最后一個是?");
                string = (NSMutableString *)[string stringByAppendingString:[NSString stringWithFormat:@"%@=%@",key,value]];
            }else{//如果不是最后一個需要加&
                if([string hasSuffix:@"&"]){//如果最后一個是&,直接拼接
                    string = (NSMutableString *)[string stringByAppendingString:[NSString stringWithFormat:@"%@=%@",key,value]];
                }else{//如果最后不是&,需要加&后拼接
                    string = (NSMutableString *)[string stringByAppendingString:[NSString stringWithFormat:@"&%@=%@",key,value]];
                }
            }
        }else{//沒找到
            if([string hasSuffix:@"&"]){//如果最后一個是&,去掉&后拼接
                string = (NSMutableString *)[string substringToIndex:string.length-1];
            }
            string = (NSMutableString *)[string stringByAppendingString:[NSString stringWithFormat:@"?%@=%@",key,value]];
        }
    } @catch (NSException *exception) {
        
    } @finally {
        
    }
    
    
    return string.copy;
}
 @end
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、通過CocoaPods安裝項目名稱項目信息 AFNetworking網(wǎng)絡(luò)請求組件 FMDB本地數(shù)據(jù)庫組件 SD...
    陽明AI閱讀 16,211評論 3 119
  • 1.ios高性能編程 (1).內(nèi)層 最小的內(nèi)層平均值和峰值(2).耗電量 高效的算法和數(shù)據(jù)結(jié)構(gòu)(3).初始化時...
    歐辰_OSR閱讀 30,260評論 8 265
  • 1.鬧鬼 在一條崎嶇的公路上,一輛班車正緩緩地向大山深處駛?cè)?,車里只有兩名乘客,一個是張郁潔,另一個則是她的好朋友...
    豌豆鹽閱讀 2,072評論 17 41
  • 崇赫閱讀 370評論 0 0
  • 《愛的五種語言》第35天: 接受禮物 我做了,送兒子去學校,找班主任聊了會,送他一本劉艷老師親筆簽名的導圖書。 對...
    路西法媽媽閱讀 136評論 0 0

友情鏈接更多精彩內(nèi)容