Xcode setImageWithUrl从Parse.com到UICollectionView
我使用的框架是:UIImageView+AFNetworking-代码如下: 这是我如何从Parse.com查询的: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
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”?