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, Plymouth, MA, 02360, |";
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总是为零。
这里的问题是由于位置名称中的空格。我如何处理这个问题。
提前致谢
答案 0 :(得分:1)
您可以将字符串的组件分隔为单个字符串,然后将其传递给必要的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, Plymouth, MA, 02360, |";
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);
答案 1 :(得分:0)
从你的代码中,strurl不应该是nil。
顺便说一句:您有内存泄漏,因为@"some string"
为您提供了一个自动释放的对象,而您在NSString *sttr=[[NSString alloc]init ];
中保留的内存永远不会被释放。
答案 2 :(得分:0)
更改您的代码。
strurl = [[NSString alloc]initWithFormat:@"http://maps.googleapis.com/maps/api/directions/json?origin=%@&destination=%@&waypoints=optimize:true%@&sensor=false&mode=driving",sttr,sttr,sttr];
答案 3 :(得分:0)
您应该使用相同数量的“%@”和您的传递更改代码的变量 -
strurl = [[NSString alloc]initWithFormat:@"http://maps.googleapis.com/maps/api/directions/json?origin=%@&destination=%@&waypoints=optimize:true%@&sensor=false&mode=driving",sttr,destinationStr,anotherVar];
此外,我不知道为什么你在这里有“%@” -
waypoints=optimize:true%@&s
如果你从这个url中获取的内容可能是nil,你应该在创建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];
}