2016-11-25 7 views
3

私はSwiftを初めて利用しています。私はNSURLURLNSDataDataを見つけたときにインターネットから画像を引っ張っていました。私は本当に混乱しています。どちらを使うのですか?次のコードを使用しましたが、以下のように型を変換する必要がありました。これを行う正しい方法は何ですか。NSURLURLNSDataDataの違いは何ですか?誰か助けてください。NSURL、URL、NSData、データ

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

答えて

12

多くのクラス名は、彼らが唯一のObjective-Cのコードで使用されるべきスウィフト3のリリースでNSプレフィックスを落としました。 Swift 3コードを書く場合は、更新されたクラスのみを使用してください。この場合、URLDataです。

はしかし、URLNSURLDataに架設されている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にキャストする必要があります。

+0

アドバイスをいただきありがとうございます。私はすべてをUrlとDataに変換しましたが、この行にはエラーがあります:if imageData = Data(contentsOf:theProfileImageUrl){ –

+0

"スローすることはできますが、tryでマークされていません。私は何かが間違っているように感じる。私はイニシャライザがエラーをスローするとは思わない。 –

+0

'Data(contentsOf:)'がエラーを投げることができるのを忘れました。私の更新された答えを見てください。 – rmaddy

関連する問題