Objective-C: How to add query parameter to NSURL?

前端 未结 8 1861
猫巷女王i
猫巷女王i 2020-12-23 18:45

Let\'s say I have an NSURL? Whether or not it already has an empty query string, how do I add one or more parameters to the query of the NSUR

8条回答
  •  夕颜
    夕颜 (楼主)
    2020-12-23 19:33

    Here's an implementation that passes your specs:

    @implementation NSURL (Additions)
    
    - (NSURL *)URLByAppendingQueryString:(NSString *)queryString {
        if (![queryString length]) {
            return self;
        }
    
        NSString *URLString = [[NSString alloc] initWithFormat:@"%@%@%@", [self absoluteString],
                               [self query] ? @"&" : @"?", queryString];
        NSURL *theURL = [NSURL URLWithString:URLString];
        [URLString release];
        return theURL;
    }
    
    @end
    

    And here is an implementation for NSString:

    @implementation NSString (Additions)
    
    - (NSURL *)URLByAppendingQueryString:(NSString *)queryString {
        if (![queryString length]) {
            return [NSURL URLWithString:self];
        }
    
        NSString *URLString = [[NSString alloc] initWithFormat:@"%@%@%@", self,
                               [self rangeOfString:@"?"].length > 0 ? @"&" : @"?", queryString];
        NSURL *theURL = [NSURL URLWithString:URLString];
        [URLString release];
        return theURL;
    }
    
    // Or:
    
    - (NSString *)URLStringByAppendingQueryString:(NSString *)queryString {
        if (![queryString length]) {
            return self;
        }
        return [NSString stringWithFormat:@"%@%@%@", self,
                [self rangeOfString:@"?"].length > 0 ? @"&" : @"?", queryString];
    }
    
    @end
    

提交回复
热议问题