2011-06-01 50 views
0
NSString *sttr=[[NSString alloc]init ]; 
    NSURL *jsonURL; 
    NSString *strurl; 

    sttr [email protected]"|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总是零。创建url字符串的问题

这里的问题是由于位置名称中的空格。我该如何处理这个问题。

在此先感谢

+0

那么@mrugen,它是你的第54个问题..仍然不知道如何格式化一个问题.. – Krishnabhadra 2011-06-01 08:50:05

+0

实际上它有点匆忙地输入它,这就是为什么,对不起。 – mrugen 2011-06-01 08:54:31

+0

你需要URL编码位置。我相信空间被编码为“+”。 – 2011-06-01 08:55:45

回答

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); 
+0

@mrugen:看看我的更新是否有助于 – visakh7 2011-06-01 09:08:06

+0

根据您的需要更改'sourceString'和'destString'。 – visakh7 2011-06-01 09:11:54

+0

@ 7KV7对不起,我的错误其实我没有通过前两个参数字符串,这就是为什么我无法创建网址和许多thansk为您的输入。 – mrugen 2011-06-03 17:48:26

0

从你的代码strurl不应该为零。

顺便说一句:你有内存泄漏,因为@"some string"给你一个自动释放的对象,并且你在NSString *sttr=[[NSString alloc]init ];中保留的内存永远不会释放。

+0

如果你可以在你的最后执行上面的代码,那么它是零。 – mrugen 2011-06-01 08:58:14

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]; 
+0

没有看到那个。但这是返回值为零的原因吗? – dasdom 2011-06-01 09:03:41

+0

我认为widout上面的LOC会得到'EXEC BAD ACCESS'。 – Hisenberg 2011-06-01 09:21:07

+0

对不起,我的错误实际上我没有通过字符串中的前两个参数,这就是为什么我无法为您的输入创建url和许多thansk。 – mrugen 2011-06-03 17:47:55

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的内容,可能是零,你应该从创建它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]; 
} 
+0

对不起,我的错误实际上我没有通过字符串中的前两个参数,这就是为什么我无法为您的输入创建url和许多thansk。 – mrugen 2011-06-03 17:48:57

+0

如果您认为我的答案或其他答案可以帮助您解决问题,那么您应该接受该答案。你也可以提出任何答案,告诉他他的答案对你有帮助! – Saurabh 2011-06-03 18:02:31