Проблема в создании строки URL - PullRequest
0 голосов
/ 01 июня 2011
    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 всегда равен nil.

В чем проблема из-за пробелов в имени местоположения. Как я могу это исправить.

Спасибо зазаранее

Ответы [ 4 ]

1 голос
/ 01 июня 2011

Вы можете разделить компоненты строки на отдельные строки и затем передать ее необходимой строке 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 голосов
/ 01 июня 2011

Вы должны использовать то же число "% @", и переменные, которые вы передаете, изменяют ваш код примерно так -

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-адреса, которое может быть нулевым, вам следует закодировать строку URL-адреса перед созданием NSURL-кода из нее .. используйте эту функцию -

-(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 голосов
/ 01 июня 2011
0 голосов
/ 01 июня 2011

Из вашего кода strurl не должен быть равен нулю.

Кстати: у вас есть утечка памяти, потому что @"some string" дает вам автоматически освобожденный объект, а память, которую вы сохранили в NSString *sttr=[[NSString alloc]init ];, никогда не освобождается.

...