swift - URL 在 Swift 3 中始终为 nil

标签 swift url swift3

我有一个用于调出 iTunes API 的结构。但是当我运行它时,myURL 变量永远不会被设置,它总是 nil。不确定我做错了什么:

let myDefaultSession = URLSession(configuration: .default)
var myURL: URL?
var myDataTask: URLSessionTask?

struct APIManager {

    func getJSON(strURL: String)  {
        myURL = URL(string: strURL)
        var dictReturn: Dictionary<String, Any> = [:]

        //cancel data task if it is running
        myDataTask?.cancel()
        print(myURL!) //<----Always nil
    }
}

这是字符串:

"https://itunes.apple.com/search?media=music&entity=song&term=The Chain"

最佳答案

您得到的是 nil,因为 URL 包含一个空格。您需要先对字符串进行编码,然后将其转换为 URL。

func getJSON(strURL: String)  {
    if let encoded = strURL.addingPercentEncoding(withAllowedCharacters: .urlFragmentAllowed),
        let myURL = URL(string: encoded) {
       print(myURL)
    }

    var dictReturn:Dictionary<String, Any> = [:]

    //cancel data task if it is running
    myDataTask?.cancel()
}

URL 将是:

https://itunes.apple.com/search?media=music&entity=song&term=The%20Chain

关于swift - URL 在 Swift 3 中始终为 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46411038/

相关文章:

url - 如何以级联结构对 Google 电子表格中的 URL 列表进行排序?

ios - Nil 与预期的参数类型选择器不兼容

swift - 等待函数完成完成处理程序失败

html - 在不执行 GET 的情况下检查重复内容

swift - 应用程序在 `layoutAttributesForSupplementaryElement` 处崩溃

iOS:ShareKit >> Twitter 设置 >> 回调 URL --- 它是什么?

ios - NSKeyedArchiver - 无法识别的选择器发送到实例错误

ios - 检查 TextField 不为空后如何启用 UIBarItem

ios - 应用程序崩溃,除非 UISwitch 被移动一次以更改加载的数组

ios - 使用未声明的类型 'PKCS7'(收据验证/OpenSSL)