我在将一个字符串转换为Swift中的Double时出现了令人惊讶的困难时间。只是为了给你一个我在做什么的概述,我正在解析一个XML文件并从特定元素中检索值。该代码看起来是这样,在Swift中将字符串转换为双精度(Xcode v 7.0.1)
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
}
,我像以前一样得到同样的结果。
FIXED:原来在“36.97736”的前面添加了额外的空白字符(空格),Swift抱怨该字符串不是Double格式,因此返回nil。
感谢您的回复。我试过这个,并继续去'else'语句。我打印'lat'和'lat'的坐标为String。然后我打印了“Double(lat)”,而'Double(lat)'则得到了'nil'。 – Ivan
什么是发现字符?我认为那是当你将其分配给foundCharacters时lat在其值丢失的值。尝试在该作业后打印纬度 – Lukas
它是“36.97736”,但在其正面印有4个空格。在“36.97736”上方也打印一条新线。我试图修剪空白,但那也没有奏效。 – Ivan