【问题标题】:Working with Unsplash. Cannot assign value of type 'Array<_>' to type 'Any?'使用 Unsplash。无法将“Array<_>”类型的值分配给“Any?”
【发布时间】:2019-06-13 19:31:20
【问题描述】:

目前,我正在处理从 JSON 文件收到的信息,由于它被组织成多个级别,我不仅需要能够将文件,而且还需要能够将其所有内容转换为正确的文件类型。我遇到了一些问题,在这个问题上我找不到 Swift 的任何东西。

到目前为止,我已经尝试了以下代码中显而易见的方法。我找不到太多关于替代方法的信息,而且我还是编程新手,所以我做的不多。

URLSession.shared.dataTask(with: urlRequest) { data, response, error in
    if let data = data {
        print("Clear")
        let returnData = String(data: data, encoding: .utf8)

        do {
            let image = try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any]
            print(image!["results"])
            var imgl2 = image!["results"]
            imgl2 = imgl2 as! Array
            //imgl2 = imgl2![0]
              //print(imgl2!["color"])
//                var imgl3 = imgl2!["results"]
//                var imgl4 = imgl3!["results"]
//                var imgl5 = imgl4!["results"]
//                var imgl6 = imgl5!["results"]
        } catch let error {
            print(error)
        }
    }
    }.resume()

这里应该发生的是我应该能够将 JSON 的内容转换为正确的文件类型。在某种程度上,这是可行的,并且我能够获得第一级的结果。但是,在 imgl2 = imgl2 as!数组,我无法将其转换为数组。相反,我收到错误(无法将“Array<_>”类型的值分配给“Any?”)。我真的很想能够使用封闭的数组,但我不能。在此之后,我将需要以这种方式对其他几个级别的内容进行分类。我试过查看 API 文档,但我不明白他们编写它的方式(顺便说一下,这是 Unsplash),因此,我尝试了这种方法。我该怎么做呢?

(有关更多信息,我正在尝试提取结果中的第一张图像,以便我可以通过编程方式对其进行编辑。我需要在对搜索查询的响应中包含 URL,但文档的方式是措辞不够清楚,这个问题的解决方案也很少,我不得不反复试验才能到达我现在的位置。任何关于如何实现这一点的见解将不胜感激。)

【问题讨论】:

    标签: arrays swift type-conversion


    【解决方案1】:

    无法将“Array<_>”类型的值分配给“Any”类型?

    错误告诉您imgl2 的类型为Any?,但您尝试为其分配Array 类型的值。 Swift 不允许在初始化后更改变量的类型。您可以做的是将imgl2 as! Array 分配给一个新变量以避免此错误。

    我也建议你看看Decodable协议来创建对应JSON结构的模型。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多