3

我正在尝试为我正在制作的天气应用程序下载网络内容。当我运行应用程序时,网站上的源代码不会出现在我的 Xcode 上。我还更新了我的 info.plist 以接受网络内容。

你知道问题是什么以及我该如何解决吗?

我在下面复制了我的代码:

override func viewDidLoad() {
    super.viewDidLoad()

    let url = NSURL(string: "http://weather.weatherbug.com/weather-forecast/now/abuja")!
    let request = NSMutableURLRequest(url:url as URL)
    let task = URLSession.shared.dataTask(with: request as URLRequest) {
        data, response, error in

        if error != nil{
            print(error.debugDescription)
        }
        else {
            if let unwrappedData = data{

                let dataString = NSString(data: unwrappedData, encoding: String.Encoding.utf8.rawValue)

                print(dataString as Any)
            }
        }
    }

    task.resume()
}
4

4 回答 4

0

将您的网址更改为使用 https,它应该可以工作。

let url = NSURL(string: "https://weather.weatherbug.com/weather-forecast/now/abuja")!
于 2017-08-08T05:39:06.850 回答
0

这是 Swift 4 中用于下载文档并解析为 JSON 的示例:

// If you're doing this in an Xcode Playground, uncomment these lines:
// import XCPlayground
// XCPSetExecutionShouldContinueIndefinitely()

let url = URL(string: "http://json-schema.org/example/geo.json")!
let task = URLSession.shared.dataTask(with: url) {
    data, response, error in

    guard error == nil else { return }
    guard data != nil else { return }
    guard (response as? HTTPURLResponse)?.statusCode == 200 else { return }

    do {
        if let json = try JSONSerialization.jsonObject(with: data!, options: []) as? [String: Any] {
            print(json)
        }
    } catch { return }
}

task.resume()
于 2017-12-21T15:27:25.623 回答
-1

使用“if let”而不是只使用“let”,它应该可以工作。

 if  let url = URL(string:"http://weather.weatherbug.com/weather-forecast/now/abuja"){

        let request = NSMutableURLRequest(url: url)

        let task = URLSession.shared.dataTask(with: request as URLRequest){

            data, responds, error in
            if error != nil{
                print(error!)

            } else {
                if let unwrappedData = data {

                    let dataString = NSString(data: unwrappedData, encoding: String.Encoding.utf8.rawValue)

                    print(dataString!)

                    DispatchQueue.main.sync(execute: {

                    })
                }
            }

        }



        task.resume()
     }
于 2019-02-15T04:27:34.770 回答
-2

利用

let myURLString = "http://weather.weatherbug.com/weather-forecast/now/abuja"
guard let myURL = URL(string: myURLString) else {
    print("Error: \(myURLString) doesn't seem to be a valid URL")
    return
}

do {
    let myHTMLString = try String(contentsOf: myURL, encoding: .ascii)
    print("HTML : \(myHTMLString)")
} catch let error {
    print("Error: \(error)")
}

链接

于 2017-08-08T05:49:00.127 回答