我从api获取数据并将其存储在字符串变量中。当我打印变量时,它返回我正在寻找的东西,但当我尝试使用.toInt方法将其转换为int时,它返回一个nil?
func getWeather() {
let url = NSURL(string: "http://api.openweathermap.org/data/2.5/weather?q=London&mode=xml")
let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {
(data, response, error) in
if error == nil {
var urlContent = NSString(data: data, encoding: NSUTF8StringEncoding) as NSString!
var urlContentArray = urlContent.componentsSeparatedByString("temperature value=\"")
var temperatureString = (urlContentArray[1].substringWithRange(NSRange(location: 0, length:6))) as String
println(temperatureString) // returns 272.32
var final = temperatureString.toInt()
println(final) //returns nil
println(temperatureString.toInt())
self.temperature.text = "\(temperatureString)"
}
}
task.resume()
}
答案 0 :(得分:4)
更简单,但稍微诡计一点,你可以使用integerValue
:
temperatureString.integerValue
与toInt
不同,integerValue
会在找到非数字时停止转换(它也会抛弃前导空格。
如果temperatureString
是String
(而不是NSString
),则需要将其推迟:
(temperatureString as NSString).integerValue
答案 1 :(得分:1)
那是因为272.32不是整数。
答案 2 :(得分:0)
272.32
不是整数。如果你的温度字符串是NSString
,你可以这样做来转换它:
Int("272.32".floatValue)