【发布时间】:2015-10-15 23:05:25
【问题描述】:
我在 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。
【问题讨论】:
标签: xcode string swift casting double