从字符串转换 NSURL
Posted
技术标签:
【中文标题】从字符串转换 NSURL【英文标题】:Convert NSURL from String 【发布时间】:2015-04-30 05:17:22 【问题描述】:这几天我刚刚学习了 Objective-C,我对 NSURL 感到困惑。这是我的代码
NSString *n = [NSString stringWithFormat:@"%@",@"http://somedomain.com/api/x?q=\"order_by\":[\"field\":\"t\",\"direction\":\"desc\"]"];
NSURL *url = [[NSURL alloc ]initWithString:n];
NSLog(@"%@",url);
但是当我尝试打印一个 url 值时,它的值为 null。 当我尝试在 url 中不带 JSON 参数的情况下初始化 url 时似乎没有问题。 我能解释一下我的问题出在哪里吗?
【问题讨论】:
你用谷歌搜索过这个 ***.com/questions/6456605/nsstring-to-nsurl 看看这个... 【参考方案1】:NSString *n = [NSString stringWithFormat:@"%@",@"http://somedomain.com/api/x?q=\"order_by\":[\"field\":\"t\",\"direction\":\"desc\"]"];
NSURL *url = [NSURL URLWithString:[n stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSLog(@"%@",url);
【讨论】:
谢谢它帮助我,我认为 stringByAddingPrecentEscape 仅用于百分比字符。 @user1752973 如果对您有帮助,请接受我的回答 不要只是向我们扔代码。解释 OP 代码中出了什么问题以及您的代码有什么不同。 @MatthiasBauch 哦,我会...谢谢你的建议【参考方案2】:从字符串组成 URL 的正确方法是使用 NSURLComponents 辅助类。
这种看似复杂的方法的原因是 URL 的每个组成部分(参见 RFC 3986)需要的百分比编码略有不同,或者可能不需要。
query 组件的确切结构并未在 RFC 3986 中定义。通常,它是一个键/值对数组,将按照 w3.org 中的描述进行转义:x-www-form-urlencoded-encoding-algorithm。 NSURLComponents
也提供了对查询组件进行编码的方法。
【讨论】:
以上是关于从字符串转换 NSURL的主要内容,如果未能解决你的问题,请参考以下文章