[英]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.