我需要在查询段中构建一个包含数组的NSURL。数组表示法如下所示:
test.com?arr[a]=1&arr[b]=2
这里的问题是NSURL转义括号,因此最终的查询段看起来像这样:
test.com?arr%5Ba%5D=1&arr%5Bb%5D=2
经过一些研究后,我偶然发现了NSURLComponents类,但就像我预期的那样,NSURLQueryItem对象只能将NSStrings作为值,因此也不会创建所需的输出。我找不到构建包含非转义括号的NSURL对象的方法。
答案 0 :(得分:0)
将要保留的字符添加到集
NSString *myString = @"http://foo.bar/?key[]=value";
NSCharacterSet *theSet = [NSCharacterSet characterSetWithCharactersInString:@"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~!*():/?[]="];
NSURL *myUrl = [NSURL URLWithString:[myString stringByAddingPercentEncodingWithAllowedCharacters:theSet]];
我不确定这是否有效,如果我在myUrl
上移动鼠标进行预览,则显示[]
但如果我po myurl.absoluteString
它显示逃脱
答案 1 :(得分:0)
此问题不再适用。据我所知,不可能构建包含非转义括号的NSURL对象。如果有人仍然找到了这样做的方法,请随意留在这里。
答案 2 :(得分:0)
这是一个古老的问题,但尚未得到解答,因此请参见:
NSArray *queryItems = @[
[NSURLQueryItem queryItemWithName:@"arr[a]" value:@"1"],
[NSURLQueryItem queryItemWithName:@"arr[b]" value:@"2"],
];
[components setQueryItems:queryItems];