Swift-NumberFormatter字符串中的数字在iPhone 8上返回nil,但在其他设备上有效

时间:2018-08-02 06:27:14

标签: ios swift

我正在开发一个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)解决了该问题,但想知道这种行为的原因。

1 个答案:

答案 0 :(得分:1)

尝试检查返回nil的iPhone的系统语言和区域设置。

NumberFormatter具有'locale'属性,默认值为locale.current。

例如当语言环境为“ en-DE”时,“ 12.9716”将返回nil。