有没有办法在iOS swift上的GoogleMaps中检查`EncodedPath`字符串是否对`GMSPath`有效?

时间:2016-06-15 07:15:48

标签: ios google-maps exception-handling

我有一个代码会在地图上显示很多Polygon,这是我的代码:

let path = GMSMutablePath(fromEncodedPath: path_str)
let polygon = GMSPolygon(path: path)
polygon.geodesic = true

polygon.map = pnlMap

如果path_str变量的格式正确,则此代码段工作正确。

但如果path_str格式出错,则应用会崩溃。

我尝试了以下方法:

if let path = GMSMutablePath(fromEncodedPath: path_str) {
    // mycode
}

此外:

do {
    let path = try GMSMutablePath(fromEncodedPath: path_str)
} catch ()...

我没有达到任何正确的解决方案。

我无法找到处理此异常的方法。

  

由于未捕获的异常终止应用程序' NSRangeException',原因:' - [__ NSCFString characterAtIndex:]:范围或索引越界'       ***第一次抛出调用堆栈:       (...)

3 个答案:

答案 0 :(得分:0)

我也陷入了这样的问题,我很抱歉,但你无法检查。我通过确保源代码向我发送正确的编码路径来纠正这个问题。

在我的情况下,崩溃发生了原因目标C正在读取\ \为\。 请检查它是否与您相同。

希望它有所帮助。

答案 1 :(得分:0)

我也面临类似的问题。要检查iOS端,我只是处理异常并假设如果引发了任何异常,这意味着编码路径无效。以下是代码段:

@try {
        GMSPath *path = [GMSPath pathFromEncodedPath:pathEncodedString];
    } @catch (NSException *exception) {
        NSLog(@"Invalid encoded path raised an Exception: %@", exception);
    } @finally {

    }

答案 2 :(得分:0)

他们在新版本中解决了这个问题:version 2.1

  

GMSPath initFromEncodedPath现在为无效输入返回nil(之前无效的输入可能导致崩溃)。 (Issue 10162。)

现在,如果Encoded Path string错误,则GMSPath path变量将为nil