0

当我尝试使用 Xcode 10 Beta 和 Swift 4.2 获取数据时出现错误。

在 swift 4.1 中,我的方法很完美,现在我有一个错误,我在互联网上找不到解决方案来修复它。

这是我的代码:

// Download photos from Google for products avatar
func fetchPhotosForProductsFromGoogle(){

    guard let requestURL = NSURL(string: URL.googleAPI + "q=\(query ?? "flagUK")" + URL.searchPhotosOnly + URL.googleSearchEngineID + URL.googleAPIKey)
        else{
            fatalError("URL can't be found.")
    }

    URLSession.shared.dataTask(with: requestURL) { (data, response, error) in

        guard error == nil else {
            print(error?.localizedDescription ?? "Error URL Session.")
            return
        }
        do {

            let googlePhotosList = try JSONDecoder().decode(GoogleSearchModel.self, from: data!)

        } catch {
            print(error.localizedDescription)
        }
        DispatchQueue.main.async {

            self.productsTableView.reloadData()
        }

        }.resume()
}

这是一张有错误的图片:

在此处输入图像描述

任何想法都会对我有很大帮助!谢谢。

4

4 回答 4

1

在 swift 3 之前,swift 类型和它们在 objc 中的计数器类型之间存在隐式桥接,但在 swift 3 之后,它被删除了,在传递此类类型时您必须明确,请参阅此处了解更多详细信息

所以你可以这样做

with: requestURL as URL

或使用 URL 而不是 NSURL

于 2018-06-28T14:42:35.537 回答
0

更改NSURLURL,我认为你应该很高兴:

guard let requestURL = URL(string: "someUrl.com")
    else{
        fatalError("URL can't be found.")
}
于 2018-06-28T14:35:22.353 回答
0

在左边你发送URL对象,但在右边它是NSURL

func dataTask(with url: URL) -> URLSessionDataTask

在文档中看到这里

于 2018-06-28T14:35:38.437 回答
0

问题出在 JSON 模型中,其中有一个名为 URL 的结构,并且由于该结构,Swift 中的 URL 类被覆盖。因此,当您将 JSON 模型转换为 Swift 时,请小心检查结构、枚举等名称的 2 倍。

于 2018-06-28T15:49:06.850 回答