Проблема со строкойByEvaluatingJavaScriptFromString - PullRequest
0 голосов
/ 26 сентября 2011

Я хочу знать, около "stringByEvaluatingJavaScriptFromString".

Согласно документу Apple."The result of running script or nil if it fails."

У меня есть метод, в котором внутри цикла for я передаю строковое значение в stringByEvaluatingJavaScriptFromString.что это будет делать ??это получит ответ для каждой строки, или что-то еще случится ??Я делал вот так ...

- (void)loadWithStartPoint:(NSString *)startPoint endPoint:(NSMutableArray *)endPoints options:(UICGDirectionsOptions *)options {
    for (int idx = 0; idx < [endPoints count]; idx ++) 
    {
        NSString *msg = [NSString stringWithFormat:@"loadDirections('%@', '%@', %@)", startPoint, [endPoints objectAtIndex:idx], [options JSONRepresentation]];
        [googleMapsAPI stringByEvaluatingJavaScriptFromString:msg];
    }
}

Чтобы получить ответ на каждую строку, что мне делать?Я думаю, что он должен получить ответ на каждую строку, которую я передаю здесь.Пожалуйста, скажите мне, что я делаю неправильно, и как бы я манипулировал моим кодом, чтобы получить ответ на все передаваемые строки.Любая помощь будет оценена .Thnx заранее.

1 Ответ

2 голосов
/ 26 сентября 2011

Вы должны сделать свой метод javascript так, чтобы он возвращал строку по умолчанию или что-то еще, если в скрипте даже произошла ошибка.

function loadDirections()
{

try
  {
  //Your code goes here which returns some result
  }
catch(err)
  {
  var errorFlag = "ERROR";
return errorFlag;
  }
}

и затем вы должны изменить свой код Objective C, как показано ниже

NSString *msg = [NSString stringWithFormat:@"loadDirections('%@', '%@', %@)", startPoint, [endPoints objectAtIndex:idx], [options JSONRepresentation]];

if([msg isEqualToString:@"ERROR")
{

//Do some error handling

}
else
{

//Your actual code goes here

}

Обновление для комментария:

Чтобы решить вашу асинхронную проблему javascript, либо (1) вы можете изменить свой дизайн и вызвать метод javascript только после получения ответа от первого вызова (2), либо вы можете использовать NSTimer, который даст немного времени для выполнения , По моему мнению, изменение вашего дизайна в соответствии с первым вариантом было бы идеально.

Посмотрите на эти вопросы stringByEvaluatingJavaScriptFromString не всегда работает возвращаемое значение javascript UIWebView

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...