我有一个代码会在地图上显示很多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:]:范围或索引越界' ***第一次抛出调用堆栈: (...)
答案 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
。