私はSwiftが初めてです。 NSURL
とURL
とNSData
とData
に出会ったとき、インターネットから画像を取得していました。私は本当に混乱しています。どれを使用しますか?次のコードを使用しましたが、次に示すように型を変換する必要がありました。これを行う適切な方法は何ですか?NSURL
とURL
とNSData
とData
の違いは何ですか?誰か助けてください。
if let theProfileImageUrl = Tweet.user.profileImageURL{
if let imageData = NSData(contentsOf: theProfileImageUrl as URL){
profileImageView.image = UIImage(data: imageData as Data)
}
}
多くのクラス名はSwift 3.のリリースでNS
プレフィックスを削除しました。これらはObjective-Cコードでのみ使用してください。Swift 3コード、更新されたクラスのみを使用する必要があります。この場合は、URL
とData
です。
ただし、URL
はNSURL
にブリッジされ、Data
はNSData
にブリッジされるため、必要に応じてそれらの間でキャストできます。
if let theProfileImageUrl = Tweet.user.profileImageURL {
do {
let imageData = try Data(contentsOf: theProfileImageUrl as URL)
profileImageView.image = UIImage(data: imageData)
} catch {
print("Unable to load data: \(error)")
}
}
どこで_Tweet.user.profileImageURL
は定義されていますが、NSURL
を使用しているように見えるため、コードでURL
にキャストする必要があります。
Swift 5.0 +バックグラウンドでフェッチ
private func fetchImage(_ photoURL: URL?) {
guard let imageURL = photoURL else { return }
DispatchQueue.global(qos: .userInitiated).async {
do{
let imageData: Data = try Data(contentsOf: imageURL)
DispatchQueue.main.async {
let image = UIImage(data: imageData)
self.userImageView.image = image
self.userImageView.sizeToFit()
}
}catch{
print("Unable to load data: \(error)")
}
}
}