stringByEvaluatingJavaScriptFromString的问题

时间:2011-09-26 05:14:43

标签: iphone uiwebview

我想知道abt "stringByEvaluatingJavaScriptFromString"

据苹果医生说。 "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 个答案:

答案 0 :(得分:2)

如果脚本中出现错误,您应该使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)你可以改变你的设计,只有在第一次调用(2)得到响应之后调用javascript方法,否则你可以使用NSTimer,这将为执行提供一点时间。在我看来,根据第一个选项改变你的设计将是完美的。

看看这些问题 stringByEvaluatingJavaScriptFromString doesn't always seem to work return value javascript UIWebView