如何解决创建网址字符串时出现问题
| NSString *sttr=[[NSString alloc]init ];
NSURL *jsonURL;
NSString *strurl;
sttr =@\"|7 Harvard Drive,Plymouth,MA,02360,|9121 SW 174th St.,Miami,FL,33157,|7 Harvard Drive,|\";
NSLog(@\"StringToSend=%@\",sttr);
strurl = [[NSString alloc]initWithFormat:@\"http://maps.googleapis.com/maps/api/directions/json?origin=%@&destination=%@&waypoints=optimize:true%@&sensor=false&mode=driving\",sttr];
但是当我调试的时候,strurl总是为零。
这里的问题是由于位置名称中有空格。我该如何处理。
提前致谢
解决方法
您可以将字符串的组成部分分离为单独的字符串,然后将其传递给必要的url字符串。
试试这个,看看是否有效
NSURL *jsonURL;
NSString *strurl;
NSString *sourceString = @\"|7 Harvard Drive,Plymouth,MA,02360,|9121 SW 174th St.\";
NSString *destString = @\"Miami,FL,33157,|7 Harvard Drive,|\";
strurl = [[NSString alloc]initWithFormat:@\"http://maps.googleapis.com/maps/api/directions/json?origin=%@&destination=%@ |&waypoints=optimize:true%@&sensor=false&mode=driving\",sourceString,destString,@\" \"];
NSLog(@\"%@\",strurl);
, 根据您的代码,strurl不应为零。
顺便说一句:您有内存泄漏,因为@\"some string\"
给您一个自动释放的对象,并且您在NSString *sttr=[[NSString alloc]init ];
中保留的内存从不释放。
, 更改您的代码。
strurl = [[NSString alloc]initWithFormat:@\"http://maps.googleapis.com/maps/api/directions/json?origin=%@&destination=%@&waypoints=optimize:true%@&sensor=false&mode=driving\",sttr,sttr];
, 您应该使用相同数量的\“%@ \”,并且您通过的变量会更改您的代码,如下所示-
strurl = [[NSString alloc]initWithFormat:@\"http://maps.googleapis.com/maps/api/directions/json?origin=%@&destination=%@&waypoints=optimize:true%@&sensor=false&mode=driving\",destinationStr,anotherVar];
另外我也不明白为什么你在这里有一个\“%@ \”-
waypoints=optimize:true%@&s
如果您要从此url中获取内容(可能为零),则应在创建NSURL之前对url字符串进行编码..使用此功能-
-(NSString *) URLEncodeString:(NSString *) str
{
NSMutableString *tempStr = [NSMutableString stringWithString:str];
[tempStr replaceOccurrencesOfString:@\" \" withString:@\"+\" options:NSCaseInsensitiveSearch range:NSMakeRange(0,[tempStr length])];
return [[NSString stringWithFormat:@\"%@\",tempStr] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。