NSURLSession.sharedSession()。dataTaskWithURL

时间:2015-10-23 17:39:38

标签: ios xcode swift swift2 swift2.1

我正在尝试异步加载来自网络的多个图片。我发现这个论坛帖子是“Loading/Downloading image from URL on Swift”,但我仍有一些“问题”。

我有这段代码:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

let newCell = tableView.dequeueReusableCellWithIdentifier("userCell") as! UserCell_TableViewCell
let selectedUser = userArray[indexPath.row]

newCell.userDescription?.text = selectedUser.getFirstName() + " " + selectedUser.getLastName()

if let userImage = selectedUser.getImage()
{
    // NO CODE
}
else
{
    newCell.userImage.downloadedFrom(self.imageArray[arrayIndex])
}

return newCell

}

extension UIImageView {

    func downloadedFrom(urlLink :String)
    {
        if let urlData = NSURL(string: urlLink) {

            NSURLSession.sharedSession().dataTaskWithURL(urlData, completionHandler: { (data, response, error) in

                if error == nil
                {

                    print("Correct URL: " + "\(urlLink)")
                }
                else
                {
                    print("Incorrect URL: " + "\(urlLink)")
                }

            }).resume()
        }
    }
}

问题

1)测试,我进入正确和错误的方向,但总是告诉我是正确的。 enter image description here

问题

1)图像可能会将其返回以供其他地方使用吗?

2)如何检测URL无效,从而输入默认图像?

修改

可选({URL:http://findicons.com/files/icons/1072/face_avatars/300/a03.png} {状态代码:200,headers {     “Accept-Ranges”= bytes;     Connection =“keep-alive”;     “Content-Length”= 32759;     “Content-Type”=“image / png”;     日期=“2015年10月23日星期五14:20:20 GMT”;     “Last-Modified”=“星期四,2010年2月11日10:49:27 GMT”;     Server =“nginx / 1.1.19”; }})

可选({URL:http://findicons.com/files/icons/1072/face_avatars/300/a01_BLABLABLA.png} {状态代码:404,headers {     Connection =“keep-alive”;     “Content-Encoding”= gzip;     “Content-Language”= en;     “Content-Type”=“text / html; charset = utf-8”;     日期=“2015年10月23日星期五18:01:11 GMT”;     Server =“gunicorn / 0.17.4”;     “Set-Cookie”=“csrftoken = 81phPal08h22q6d87lC85TqCCOniJhhJ; expires = Fri,2016年10月21日18:01:11 GMT; Max-Age = 31449600; Path = /”;     “转移编码”=身份;     Vary =“Accept-Encoding,Cookie,Accept-Language”; }})

1 个答案:

答案 0 :(得分:1)

response是NSHTTPURLResponse。如果statusCode404,则您没有数据,不应再继续使用。

您没有收到错误的原因是没有错误;这是一个完全有效和完整的网络来回通信。