当我运行应用程序时Xcode告诉我
在展开可选值时意外找到nil
在网址,但网址不是零,有人能帮忙吗?
这是密码

import Foundation

protocol WeatherUndergroundServiceByGeographicalDelegate{

    func setWeatherByGeographical(weather:WeatherUnderground)
}

class WeatherUndergoundServiceByGeographical{

    var delegate:WeatherUndergroundServiceByGeographicalDelegate?

    func getWeatherFromWeatherUnderground(latitude:Double, longitude:Double){

        let path = "http://api.wunderground.com/api/48675fd2f5485cff/conditions/geolookup/q/\(latitude,longitude).json"
        let url = NSURL(string: path)


        //session
        let session = NSURLSession.sharedSession()


//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Error is at here~~~~~~~~~~~~~~~~~~~~~~~~~
        let task = session.dataTaskWithURL(url!) { (data:NSData?, response:NSURLResponse?, error:NSError?) -> Void in
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

            let json = JSON(data: data!)
            //parsing json weather condition from weather api. using swiftyJson
            let name = json["current_observation"]["display_location"]["city"].string
            let temp = json["current_observation"]["temp_c"].double
            let windsp = json["current_observation"]["wind_mph"].double

            //prasing the weather data
            let weather = WeatherUnderground(cityName: name!, temperature: temp!, windSpeed: windsp!)

            if self.delegate != nil{
                dispatch_async(dispatch_get_main_queue(), { () -> Void in

                    self.delegate?.setWeatherByGeographical(weather)

                })
            }
        }
        task.resume()
    }


}

最佳答案

您的路径字符串可能有错误,请尝试以下操作:

let path = "http://api.wunderground.com/api/48675fd2f5485cff/conditions/geolookup/q/\(latitude),\(longitude).json"

原因是您正在字符串中插入元组值\(latitude,longitude),这会增加额外的空间,并使url字符串无效,因为空间没有百分比转义。
相反,必须在每个值之间插入逗号:\(latitude),\(longitude)

10-07 23:32