为什么我的变量在转换为int后返回nil?

时间:2015-03-20 00:36:48

标签: swift

我从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()
}

3 个答案:

答案 0 :(得分:4)

更简单,但稍微诡计一点,你可以使用integerValue

temperatureString.integerValue

toInt不同,integerValue会在找到非数字时停止转换(它也会抛弃前导空格。

如果temperatureStringString(而不是NSString),则需要将其推迟:

(temperatureString as NSString).integerValue

答案 1 :(得分:1)

那是因为272.32不是整数。

你可以convert it to a Float

答案 2 :(得分:0)

272.32不是整数。如果你的温度字符串是NSString,你可以这样做来转换它:

Int("272.32".floatValue)