我在將一個字符串轉換爲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