如何通过swift将图像从URL分配到NSData?

如何通过swift将图像从URL分配到NSData?,swift,nsdata,Swift,Nsdata,我不熟悉斯威夫特 我有一个密码。它将本地图像logo.png编码为NSData let testImage = NSData(contentsOfFile: NSBundle.mainBundle().pathForResource("logo", ofType: "png")!) 如何将图像从URL编码到NSData 用所需的URL替换myURL: 让testImage=NSData(contentsofull:myURL)试试这个:- var image: UIImage? let im

我不熟悉斯威夫特

我有一个密码。它将本地图像logo.png编码为NSData

let testImage = NSData(contentsOfFile: NSBundle.mainBundle().pathForResource("logo", ofType: "png")!)

如何将图像从URL编码到NSData

用所需的URL替换
myURL

让testImage=NSData(contentsofull:myURL)
试试这个:-

var image: UIImage?

let imgURL = NSURL(string: "\(yourURL)")
let request: NSURLRequest = NSURLRequest(URL: imgURL!)
let mainQueue = NSOperationQueue.mainQueue()
NSURLConnection.sendAsynchronousRequest(request, queue: mainQueue, completionHandler: { (response, data, error) -> Void in
  if error == nil {
     // Convert the downloaded data in to a UIImage object
     image = UIImage(data: data!)
  } else {
     image = UIImage(named: "JobPlaceholder") // if occurred an error put a placeholder image
  }
})

这一个在Swift 3.0中运行将:forcastURL的内容替换为:forcastURL的内容!作为URL

     let forecastURL = NSURL(string: "http://photos.state.gov/libraries/media/788/images/90x90.gif")

    let testImage = NSData (contentsOf: forecastURL! as URL)

    print("data",testImage!)

    let image = UIImage(data: testImage! as Data)
    print("imaGE :-",image!)

我已经完成了swift 3.3和4。但这将挂起用户界面,并导致抖动

do {
      let imgData = try NSData(contentsOf: URL.init(string: "SomeUrl")!, options: NSData.ReadingOptions())
      let image = UIImage(data: imgData as Data)
        DispatchQueue.main.async() { () -> Void in
          completionBlock(image)
   }
} catch {

}
您还可以将图像url传递给URLSession的dataTask方法,并获取响应中的数据。这是避免UI中出现抖动的最佳方法。如下

if let url = URL(string: "someUrl") {
   URLSession.shared.dataTask(with: url) { (data, response, error) in
    guard let httpURLResponse = response as? HTTPURLResponse, httpURLResponse.statusCode == 200,
          let mimeType = response?.mimeType, mimeType.hasPrefix("image"),
          let data = data, error == nil,
          let image = UIImage(data: data) else    {
                DispatchQueue.main.async() { () -> Void in
                    completionBlock(nil)
                }
                return
            }
            DispatchQueue.main.async() { () -> Void in
                completionBlock(image)
            }
          }.resume()
      }

它是本地资源URL还是网站图像URL?它是网站图像URL。不要使用该答案。它将锁定你的应用程序,以防你失去internet连接,并且不能保证它会成功使用异步方法NSURLSessionI尝试过,但testImage的值与我从本地文件系统获得的值不同。甚至本地图像和网站上的图像都是相同的文件(只有两个副本)。我使用:let url=NSURL(string:)let testImage=NSData(contentsofull:url!)@HZh忘记这个方法,试着从我发布的链接中读取答案