Ios 从字符串转换NSURL

Ios 从字符串转换NSURL,ios,objective-c,Ios,Objective C,我刚从这几天开始学习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); 但

我刚从这几天开始学习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值时,它是空的。 当我尝试在url中没有JSON参数的情况下初始化url时,似乎没有问题。
我能解释一下我的问题出在哪里吗?

从字符串组成URL的正确方法是使用helper类

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);
这种看似复杂的方法的原因是,URL的每个组件(请参阅)都需要稍微不同的百分比编码,或者可能不需要


不过,RFC3986中没有定义查询组件的确切结构。通常,它是一个密钥/值对数组,将按照w3.org上的描述进行转义:
NSURLComponents
还提供了一种对查询组件进行编码的方法。

从字符串组成URL的正确方法是使用helper类

这种看似复杂的方法的原因是,URL的每个组件(请参阅)都需要稍微不同的百分比编码,或者可能不需要


不过,RFC3986中没有定义查询组件的确切结构。通常,它是一个密钥/值对数组,将按照w3.org上的描述进行转义:
NSURLComponents
还提供了一种对查询组件进行编码的方法。

您搜索过这个chek this out吗…您搜索过这个chek this out吗…谢谢它帮助我,我认为stringByAddingPrecentEscape仅用于百分比字符。@user1752973如果有帮助,请接受我的答案,不要向我们扔代码。解释OPs代码中的错误以及您的代码的不同之处。@MatthiasBauch ohk我会。。。谢谢你的建议,谢谢你的帮助,我认为stringByAddingPrecentEscape只适用于%字符。@user1752973如果有帮助,请接受我的回答,不要向我们扔代码。解释OPs代码中的错误以及您的代码的不同之处。@MatthiasBauch ohk我会。。。谢谢你的建议