Xcode setImageWithUrl从Parse.com到UICollectionView

Xcode setImageWithUrl从Parse.com到UICollectionView,xcode,swift,parse-platform,Xcode,Swift,Parse Platform,我使用的框架是:UIImageView+AFNetworking-代码如下: 这是我如何从Parse.com查询的: func queryFromParse(){ var query = PFQuery(className: "currentUploads") query.orderByDescending("createdAt") query.findObjectsInBackgroundWithBlock { (objects:[AnyObje

我使用的框架是:UIImageView+AFNetworking-代码如下:

这是我如何从Parse.com查询的:

func queryFromParse(){
        var query = PFQuery(className: "currentUploads")
        query.orderByDescending("createdAt")
        query.findObjectsInBackgroundWithBlock { (objects:[AnyObject]?, error:NSError?) -> Void in
            if error == nil
            {
                if let newObjects = objects as? [PFObject] {

                    for oneobject in newObjects {
                        let text = oneobject["imageText"] as! String
                        let username = oneobject["username"] as! String
                        let time = oneobject.createdAt!

                        if let userImage = oneobject["imageFile"] as? PFFile {
                            let userImage = oneobject["imageFile"] as! PFFile

                            let imageURL = userImage.url // <- Bruker nå userImage.URL, henter ikke bildefilen med en gang

                            var OneBigObject = Details(username: username, text: text, CreatedAt: time, image: imageURL!)

                            self.arrayOfDetails.append(OneBigObject)

                            dispatch_async(dispatch_get_main_queue()) { self.collectionView.reloadData() }
                        }
                    }
                }
            }
        }
    }
我有个问题。加载这些图像需要10-20秒,而我在解析中只有大约10个图像。这是5秒后的情况:

这里有什么建议吗?

替换这些代码:

dispatch_async(dispatch_get_main_queue()) { self.collectionView.reloadData() }
   }
使用
cellforrowatinexpath
方法中的这些代码:

 let request: NSURLRequest = NSURLRequest(URL: imgURL)
 let mainQueue = NSOperationQueue.mainQueue()
 NSURLConnection.sendAsynchronousRequest(request, queue: mainQueue, completionHandler: { (response, data, error) -> Void in
    if error == nil {
        let image = UIImage(data: data)
        // Update the cell
        dispatch_async(dispatch_get_main_queue(), {
            if let cellToUpdate = tableView.cellForRowAtIndexPath(indexPath) {
                cellToUpdate.imageView?.image = image
                    }
                })
            }
            else {
                println("Error: \(error.localizedDescription)")
                 }
            })
替换以下代码:

dispatch_async(dispatch_get_main_queue()) { self.collectionView.reloadData() }
   }
使用
cellforrowatinexpath
方法中的这些代码:

 let request: NSURLRequest = NSURLRequest(URL: imgURL)
 let mainQueue = NSOperationQueue.mainQueue()
 NSURLConnection.sendAsynchronousRequest(request, queue: mainQueue, completionHandler: { (response, data, error) -> Void in
    if error == nil {
        let image = UIImage(data: data)
        // Update the cell
        dispatch_async(dispatch_get_main_queue(), {
            if let cellToUpdate = tableView.cellForRowAtIndexPath(indexPath) {
                cellToUpdate.imageView?.image = image
                    }
                })
            }
            else {
                println("Error: \(error.localizedDescription)")
                 }
            })

更新了我的答案。也可以考虑在重新使用单元格之后缓存图像,这些代码试图再次下载图像。您可能想使用我在“let request:NSURLRequest=NSURLRequest(URL:imgURL)”中输入的内容“imgURL”?更新了我的答案。也可以考虑在重新使用单元格之后缓存图像,这些代码试图再次下载图像。您可能想使用我在“let-request:NSURLRequest=NSURLRequest(URL:imgURL)”中输入的内容“imgURL”?