Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用Alamofire下载图像并在UITableViewCell中显示_Ios_Json_Uitableview_Swift3_Alamofire - Fatal编程技术网

Ios 使用Alamofire下载图像并在UITableViewCell中显示

Ios 使用Alamofire下载图像并在UITableViewCell中显示,ios,json,uitableview,swift3,alamofire,Ios,Json,Uitableview,Swift3,Alamofire,我有两个功能: func callAlamo(url: String){ Alamofire.request(url).responseJSON(completionHandler: { response in self.parseData(JSONData: response.data!) }) } func parseData(JSONData: Data) { do { var readableJSON = tr

我有两个功能:

func callAlamo(url: String){
    Alamofire.request(url).responseJSON(completionHandler: {
        response in

        self.parseData(JSONData: response.data!)

    })
}

func parseData(JSONData: Data) {
    do {
        var readableJSON = try JSONSerialization.jsonObject(with: JSONData, options: .mutableContainers) as! JSONStandard
        if let tracks = readableJSON["tracks"] as? JSONStandard{
            if let items = tracks["items"] as? [JSONStandard]{
                for i in 0..<items.count{
                    let item = items[i]
                    let name = item["name"] as! String

                    if let album = item["album"] as? JSONStandard{
                        if let images = album["images"] as? [JSONStandard]{
                            let imageData = images[0]
                            let mainImageUrl = URL(string: imageData["url"] as! String)
                            let mainImageData = NSData(contentsOf: mainImageUrl!)

                            let mainImage = UIImage(data: mainImageData as! Data)
                            posts.append(post.init(image: mainImage, name: name))

                            self.tableView.reloadData()
                        }
                    }
                }
            }
        }
    }
    catch{
        print(error)
    }
}
我将如何使用这两个函数将检索到的信息获取到该图像中?因为我无法从图像模拟内部访问函数。

使用“SDWebImage”库异步下载图像

请参阅以下链接:-

用途:-

目标C:

#import <SDWebImage/UIImageView+WebCache.h>
[imageView sd_setImageWithURL:[NSURL 
URLWithString:imageURL]
         placeholderImage:[UIImage imageNamed:@"placeholder.png"]];
将图像存储在func parseData()中的“imgFinal”数组中:

添加此方法以下载图像:

func load_image(link:String, imageview:UIImageView, indVal:Int)
{

    let url:NSURL = NSURL(string: link)!
    let session = NSURLSession.sharedSession()

    let request = NSMutableURLRequest(URL: url)
    request.timeoutInterval = 10

    let task = session.dataTaskWithRequest(request) {
        (
        let data, let response, let error) in

        guard let _:NSData = data, let _:NSURLResponse = response  where error == nil else {

            return
        }

        var image = UIImage(data: data!)

        if (image != nil)
        {
            func set_image()
            {
                //self.images_cache[link] = image
                self.imgFinal[link] = image
                imageview.image = image
            }
            dispatch_async(dispatch_get_main_queue(), set_image)
        }
    }
    task.resume()
}

可以将图像存储在单独的成员变量中。由于您正在调用
reloadData
,它将调用tableView的委托方法,然后您可以在
CellForRowatineXpath
中设置图像。如何将图像存储在单独的成员变量中?这在今天仍然相关,帮助很大。谢谢
import SDWebImage

imageView.sd_setImage(with: URL(string: imageURL), placeholderImage: UIImage(named: "placeholder.png"))
var imgFinal = [String:UIImage]()
self.imgArrList[i] = imageData["url"]


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


  let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! CategoryTableViewCell
    load_image((imgArrList[indexPath.row] as? String)!, imageview: cell.titleImage, indVal: indexPath.row)
return cell
}
func load_image(link:String, imageview:UIImageView, indVal:Int)
{

    let url:NSURL = NSURL(string: link)!
    let session = NSURLSession.sharedSession()

    let request = NSMutableURLRequest(URL: url)
    request.timeoutInterval = 10

    let task = session.dataTaskWithRequest(request) {
        (
        let data, let response, let error) in

        guard let _:NSData = data, let _:NSURLResponse = response  where error == nil else {

            return
        }

        var image = UIImage(data: data!)

        if (image != nil)
        {
            func set_image()
            {
                //self.images_cache[link] = image
                self.imgFinal[link] = image
                imageview.image = image
            }
            dispatch_async(dispatch_get_main_queue(), set_image)
        }
    }
    task.resume()
}