【发布时间】:2016-12-22 20:38:07
【问题描述】:
iOS/Swift 新手。我正在尝试将一个项目(只是通过NSData init() 方法从 URL 获取内容)从 Swift 2 迁移到 Swift 3。原始代码如下所示:
let loadedImageData = NSData(contentsOfURL: imageURL)
dispatch_async(dispatch_get_main_queue()) {
if imageURL == user.profileImageURL {
if let imageData = loadedImageData {
self.profileImageView?.image = UIImage(data: imageData)
}
}
}
Swift 3 迁移:
let loadedImageData = NSData(contentsOf: imageURL as URL)
DispatchQueue.main.async {
if imageURL == user.profileImageURL {
if let imageData = loadedImageData {
self.profileImageView?.image = UIImage(data: imageData as Data)
}
}
}
我不确定为什么我们需要将 NSData 返回值转换为 URL,然后在 Swift 3 中加载图像时再次将该返回值转换为 Data 类型。我们正在分配原始数据到两个版本中的变量loadedImageData。那为什么要选角呢? UIImage init() 方法似乎需要 Swift 3 中的数据对象。但是对于 Swift 2,没有相同的转换。这是为什么呢?
感谢您的帮助。
【问题讨论】: