我正在开发一个iOS应用,该应用使用该位置在地图上绘制。
下面的代码用于创建CLLocationCoordinate2D
对象。
let locationData = ["12.9716","77.5946"]
let latitude = NumberFormatter().number(from: locationData[0] as! String)
let longitude = NumberFormatter().number(from: locationData[1] as! String)
print("Latitude Info -> \(String(describing: latitude?.doubleValue))")
print("Longitude Info -> \(String(describing: longitude?.doubleValue))")
let location = CLLocationCoordinate2DMake((latitude?.doubleValue)!, (longitude?.doubleValue)!)
该代码在iPhone 6和其他设备上正常运行,但是在iPhone 8上,纬度和经度值返回nil。
这种行为很奇怪,因为这是特定于某些设备设置的。
通过改用Double(locationData[0] as! String)
解决了该问题,但想知道这种行为的原因。
答案 0 :(得分:1)
尝试检查返回nil的iPhone的系统语言和区域设置。
NumberFormatter具有'locale'属性,默认值为locale.current。
例如当语言环境为“ en-DE”时,“ 12.9716”将返回nil。