美文网首页
[iOS]---url拼接参数封装方法

[iOS]---url拼接参数封装方法

作者: 半缘魔君 | 来源:发表于2018-06-08 13:20 被阅读0次

    近期项目中的一个URL拼接的地方出现了问题,跟接口方约定好规则--

    他提供的原始URL是带“?”的,我们直接拼接参数就好了,

    但是他们更新接口后,提供的原始URL不带”?“了,导致线上出现问题。

    在新版本解决这个问题很简单,加上“?”就可以了,可是老版本怎么办? 或者以后他们的规则又变了怎么办?

    最终考虑做一个URL拼接的封装,实现各种情况下拼接参数不会出问题:
    封装法法如下:

    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) {//找到了
                //如果?是最后一个直接拼接参数
                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
    

    相关文章

      网友评论

          本文标题:[iOS]---url拼接参数封装方法

          本文链接:https://www.haomeiwen.com/subject/rrxasftx.html