簡體   English   中英

Swift:NSURL會話不適用於watchOS

[英]Swift: NSURL Session not working with watchOS

我正在使用NSURL會話來獲取特定網站的HTML代碼。 以下代碼在iOS上運行正常(在ViewController.swift中),但在watchOS(在InterfaceController.swift中)始終失敗。 代碼始終打印else語句:print(“ apple watch:加載nsurlsession時出錯”)。

誰能解釋給我(為什么會失敗,以及)我該如何改變呢? 感謝您的每一個回應!

(我在iOS 11和watchOS 4.0上使用了swift 4.0-已在模擬器中以及與配對的Apple Watch系列2在iPhone 7上進行測試)

碼:

func authorizeBase() {
    let loginString = NSString(format: "%@:%@", username, password)
    let loginData: NSData = loginString.data(using: String.Encoding.utf8.rawValue)! as NSData
    let base64LoginString = loginData.base64EncodedString(options: [])

    let url: NSURL = NSURL(string: urlPath)!

    let request: NSMutableURLRequest = NSMutableURLRequest(url: url as URL)
    request.setValue("Basic \(base64LoginString)", forHTTPHeaderField: "Authorization")
    request.httpMethod = "GET"

    let config = URLSessionConfiguration.default

    config.requestCachePolicy = .reloadIgnoringLocalCacheData //deactivate cache
    config.urlCache = nil

    let authString = "Basic \(base64LoginString)"
    config.httpAdditionalHeaders = ["Authorization" : authString]
    let session = URLSession(configuration: config)

    session.dataTask(with: url as URL) {
        ( data, response, error) in
        if (response as? HTTPURLResponse) != nil {
            _ = NSString(data: data!, encoding: String.Encoding.utf8.rawValue)

            let contents = String(data: data!, encoding: .ascii)

            print("apple watch: Content:", contents!)
            self.parseHTMLOverview(content: contents!)

            self.updateTable() //!!!

        }
        else {
            print("apple watch: error with loading nsurlsession")
        }

    }.resume()

}

非常感謝您的提示Srstka!

經過數小時的思考,我終於明白了。 我只是忘記在WatchKit擴展的Info.plist中添加“允許任意加載”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM