繁体   English   中英

Swift 4:无法将“数据”类型的值转换为预期的参数类型“数据”

[英]Swift 4 : Cannot convert value of type 'Data' to expected argument type 'Data'

我正在使用 Xcode 9、Swift 4。

我正在尝试使用以下代码从 URL 在 ImageView 中显示图像:

func getImageFromUrl(sourceUrl: String) -> UIImage {
        let url = URL(string: sourceUrl)
        let dict = NSDictionary(contentsOf: url!)
        let data = Data(dictionary: dict!)
        let image = UIImage(data: data!)
        return image
}

但是我在let image = UIImage(data: data!)出错了。

编译器说:

无法将“数据”类型的值转换为预期的参数类型“数据”

我究竟做错了什么?

/// Returns nil if image data is not correct or some network error has happened
func getImageFromUrl(sourceUrl: String) -> UIImage? {
  if let url = URL(string: sourceUrl) {
    if let imageData = try? Data(contentsOf:url) {
      return UIImage(data: imageData)
    }
  }
  return nil
}

我在网络通话中遇到了类似的问题。 我必须明确键入Foundation.Data以确保没有发生一些奇怪的命名空间事情。

  func getMediaItems(completion: @escaping (Foundation.Data?, ResponseError?) -> ()) {
         let session = URLSession(configuration: .default)
         let url = self.makeURL()
         let task = session.dataTask(with: url, completionHandler: 
              { data, response, error in
                   if let imageData = data {
                        completion(data, nil) // had error here
             //etc, etc...

很烦人。 我不确定我是否遗漏了什么或者是 Swift 4 的错误,但它似乎解决了这个问题。 没有“基础”,我在completion(data,nil)得到了相同的区域completion(data,nil) (ps。不要使用此代码,因为它是一个示例,不包括错误处理)

请检查项目中是否有任何类名有数据(您创建的)。 由于类名冲突,swift 可能无法识别 Foudation 的 Data 类或您的 Project 的 Data 类。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM