swift 中的解析非常慢 - 我的编程有问题?
Parse in swift is very slow - my programming at fault ?
我在 Parse 中有一个主要的 class,它在 swift 中提供了一个 table 视图。背景图像覆盖了整个背景。这些图像的大小为 480k。它们并不总是出现在 tableviewcell 上(我知道我可以添加占位符图像)。我与手机的连接速度非常快。如果我使用 4g,它们甚至根本不会出现。
这是我下拉图片的功能。我真的不知道我还能做什么。
func loadImages() {
var query = PFQuery(className: "TableViewData")
query.orderByDescending("objectId")
query.findObjectsInBackgroundWithBlock ({(objects:[AnyObject]!, error: NSError!) in
if(error == nil){
let imageObjects = objects as [PFObject]
for object in objects {
let thumbNail = object["backgroundImage"] as PFFile
thumbNail.getDataInBackgroundWithBlock({
(imageData: NSData!, error: NSError!) -> Void in
if (error == nil) {
let image = UIImage(data:imageData)
self.CellBackgroundImage.append(image!)
println(self.CellBackgroundImage.count)
}
})
}
}
else{
println("Error in retrieving \(error)")
}
})
}
如您所见,我将它们添加为数组,table视图将根据 index.path 显示它们。
任何人都可以提出任何建议吗?
用户界面的更新必须始终在主线程上执行。异步网络完成通常在后台线程上调用(不确定 PFQuery 的东西),因此您需要强制更新发生在正确的线程上:
dispatch_async(dispatch_get_main_queue()) {
self.CellBackgroundImage.append(image!)
}
我在 Parse 中有一个主要的 class,它在 swift 中提供了一个 table 视图。背景图像覆盖了整个背景。这些图像的大小为 480k。它们并不总是出现在 tableviewcell 上(我知道我可以添加占位符图像)。我与手机的连接速度非常快。如果我使用 4g,它们甚至根本不会出现。
这是我下拉图片的功能。我真的不知道我还能做什么。
func loadImages() {
var query = PFQuery(className: "TableViewData")
query.orderByDescending("objectId")
query.findObjectsInBackgroundWithBlock ({(objects:[AnyObject]!, error: NSError!) in
if(error == nil){
let imageObjects = objects as [PFObject]
for object in objects {
let thumbNail = object["backgroundImage"] as PFFile
thumbNail.getDataInBackgroundWithBlock({
(imageData: NSData!, error: NSError!) -> Void in
if (error == nil) {
let image = UIImage(data:imageData)
self.CellBackgroundImage.append(image!)
println(self.CellBackgroundImage.count)
}
})
}
}
else{
println("Error in retrieving \(error)")
}
})
}
如您所见,我将它们添加为数组,table视图将根据 index.path 显示它们。
任何人都可以提出任何建议吗?
用户界面的更新必须始终在主线程上执行。异步网络完成通常在后台线程上调用(不确定 PFQuery 的东西),因此您需要强制更新发生在正确的线程上:
dispatch_async(dispatch_get_main_queue()) {
self.CellBackgroundImage.append(image!)
}