ios 从URL中截取所包含的参数,并且以字典的形式返回

来源:互联网 发布:苹果怎么连不上4g网络 编辑:程序博客网 时间:2024/05/18 02:11

从URL中截取所包含的参数,并且以字典的形式返回

/** *  截取URL中的参数 * *  @return NSMutableDictionary parameters */- (NSMutableDictionary *)getURLParameters:(NSString *)urlStr {        // 查找参数    NSRange range = [urlStr rangeOfString:@"?"];    if (range.location == NSNotFound) {        return nil;    }        // 以字典形式将参数返回    NSMutableDictionary *params = [NSMutableDictionary dictionary];        // 截取参数    NSString *parametersString = [urlStr substringFromIndex:range.location + 1];        // 判断参数是单个参数还是多个参数    if ([parametersString containsString:@"&"]) {                // 多个参数,分割参数        NSArray *urlComponents = [parametersString componentsSeparatedByString:@"&"];                for (NSString *keyValuePair in urlComponents) {            // 生成Key/Value            NSArray *pairComponents = [keyValuePair componentsSeparatedByString:@"="];            NSString *key = [pairComponents.firstObject stringByRemovingPercentEncoding];            NSString *value = [pairComponents.lastObject stringByRemovingPercentEncoding];                        // Key不能为nil            if (key == nil || value == nil) {                continue;            }                        id existValue = [params valueForKey:key];                        if (existValue != nil) {                                // 已存在的值,生成数组                if ([existValue isKindOfClass:[NSArray class]]) {                    // 已存在的值生成数组                    NSMutableArray *items = [NSMutableArray arrayWithArray:existValue];                    [items addObject:value];                                        [params setValue:items forKey:key];                } else {                                        // 非数组                    [params setValue:@[existValue, value] forKey:key];                }                            } else {                                // 设置值                [params setValue:value forKey:key];            }        }    } else {        // 单个参数                // 生成Key/Value        NSArray *pairComponents = [parametersString componentsSeparatedByString:@"="];                // 只有一个参数,没有值        if (pairComponents.count == 1) {            return nil;        }                // 分隔值        NSString *key = [pairComponents.firstObject stringByRemovingPercentEncoding];        NSString *value = [pairComponents.lastObject stringByRemovingPercentEncoding];                // Key不能为nil        if (key == nil || value == nil) {            return nil;        }                // 设置值        [params setValue:value forKey:key];    }        return params;}


0 0
原创粉丝点击