xcode - 在 Swift 中将字符串转换为 double 值 (Xcode v 7.0.1)

标签 xcode string swift casting double

我在 Swift 中将 String 转换为 Double 时遇到了令人惊讶的困难。只是为了让您大致了解我正在做的事情,我正在解析一个 XML 文件并从某些元素中检索值。代码如下所示,

var lat = ""
var lati = 0.0

func parser(parser: NSXMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) {

    if elementName == "lat" {
        self.lat = foundCharacters
        self.lati = (self.lat as NSString).doubleValue
    }

}

当我打印 self.lat 时,坐标将作为字符串“36.97736”输出。但是,当我打印 self.lati 时,会打印 Double 0.0。

我也尝试过

self.lat = foundCharacters
let formatter = NSNumberFormatter()
formatter.locale = NSLocale(localeIdentifier: "en_US")
if let decimalAsDoubleUnwrapped = formatter.numberFromString(self.lat)       {
    self.lati = decimalAsDoubleUnwrapped.doubleValue
}

我得到了和以前一样的结果。

已修复:结果发现“36.97736”前面添加了额外的空白字符(空格),并且 Swift 提示该字符串不是 Double 格式,因此它返回 nil。

最佳答案

在 Swift 2.0 中,您可以使用 Double("String") 返回一个可选值。以下是如何在代码中使用它

    lat = foundCharacters //not mentioned in the function btw
    if let doubleFromlat = Double(lat) {
        lati = doubleFromlat
    } else { print("foundCharacters does not hold double") }

关于xcode - 在 Swift 中将字符串转换为 double 值 (Xcode v 7.0.1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33159965/

相关文章:

objective-c - 沙盒化时如何访问另一个文件引用的文件(应用程序商店)

ios - GoogleAnalytics iOS SDK 中 AppView 和 ScreenView 的区别

c - 数组随机排序

ios - 无法将类型 'JSONObject.Type'(又名 'Dictionary<String, Any>.Type')的值分配给类型 'JSONObject'(又名 'Dictionary<String, Any>')

swift - 为什么 Swift 中的过滤器会迭代集合两次?

ios - xcodebuild [MT] iPhoneSimulator : Could not launch simulator: -600

xcode - 在 subview @ viewDidLayoutSubviews 中覆盖 UIButton 的自动布局中心值

ruby-on-rails - Ruby - 为什么这个构造返回零?

java - 用 | 分割字符串java中的分隔符

ios - swift 4 "This class is not key value coding compliant"