2011-06-01 83 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