2014-10-06 51 views
0

所以我使用AlamoFire庫來下載一個圖像url,它返回對象'avatarData'的NSData。但我不知道如何將這個信息保存到一個NSImage對象中以供以後在視圖中使用。從Swift中下載NSData創建一個NSImage

這裏的在我最好的嘗試轉換爲NSImage中

private func GetAvatar(avatarHash: String) { 
    let avatar = "https://trello-avatars.s3.amazonaws.com/\(avatarHash)/30.png" 
    Alamofire.request(.GET, avatar) 
     .response {(request, response, avatarData, error) in 
      if (error != nil) { 
       self.handleConnectionError(error) 
      } else { 
       println(avatarData) 
       let backgroundImage = NSImage(avatarData: NSData) 
      } 
    } 

} 

我已經試過了語法的一對夫婦的變化,但我通常用錯誤的結束:

expected member name or constructor call after type name

和/或

missing argument for parameter 'flipped' in call


這裏的println(avatarData)

Optional(<89504e47 0d0a1a0a 0000000d 49484452 0000001e 0000001e 08020000 01c35509 63000008 72494441 5448c705 ...

回答

3

avatarData樣本是一個NSData,NSImage有一個構造函數的NSData,只是使用:

let image = NSImage(data:avatarData!) 
+0

謝謝大衛! XCode編譯器對此表示錯誤,認爲它不能「隱式」下載avatarData來鍵入NSData。用'let backgroundImage = NSImage(data:avatarData as NSData)'明確地轉換類型'做了它。我不知道是否有這樣做的缺點或任何東西.. – Pirijan 2014-10-08 01:18:43

+0

我從來沒有使用Alamodome,所以不真正知道,但從命名我會認爲它始終是一個MSData。爲了安全起見,你應該把它包裝在一個if let語句中 – 2014-10-08 05:57:27

1

你可以使用我寫的類簡化了異步下載網絡中的圖像並使用NSImageView和Swift顯示它們(從Obj移植由其他人的ective-C版本): https://github.com/davecom/DKAsyncImageView

+0

看起來像一個非常酷的庫davecom,它不符合我對這個項目的需求,但我一定會考慮它在未來:) – Pirijan 2014-10-13 14:31:18