web-dev-qa-db-ja.com

NSURL、URLおよびNSData、データ

私はSwiftが初めてです。 NSURLURLNSDataDataに出会ったとき、インターネットから画像を取得していました。私は本当に混乱しています。どれを使用しますか?次のコードを使用しましたが、次に示すように型を変換する必要がありました。これを行う適切な方法は何ですか?NSURLURLNSDataDataの違いは何ですか?誰か助けてください。

if let theProfileImageUrl = Tweet.user.profileImageURL{
    if let imageData = NSData(contentsOf: theProfileImageUrl as URL){
        profileImageView.image = UIImage(data: imageData as Data)
    }
}
10
Nikhil Sridhar

多くのクラス名はSwift 3.のリリースでNSプレフィックスを削除しました。これらはObjective-Cコードでのみ使用してください。Swift 3コード、更新されたクラスのみを使用する必要があります。この場合は、URLDataです。

ただし、URLNSURLにブリッジされ、DataNSDataにブリッジされるため、必要に応じてそれらの間でキャストできます。

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にキャストする必要があります。

25
rmaddy

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)")
        }
    }
}
1
Bary Levy