Ios 由于从解析查询检索到的数据,UICollectionView在滚动时延迟

Ios 由于从解析查询检索到的数据,UICollectionView在滚动时延迟,ios,parse-platform,swift3,uicollectionview,Ios,Parse Platform,Swift3,Uicollectionview,我正在开发一个以Parse为后端的iOS应用程序。 我使用此查询从服务器检索一些数据并填充集合视图 let getAncmntsQuery = PFQuery(className: "Announcement") getAncmntsQuery.whereKey("categories", equalTo: self.category.objectId!) getAncmntsQuery.includeKey("user") getAncmntsQuery.order(b

我正在开发一个以Parse为后端的iOS应用程序。 我使用此查询从服务器检索一些数据并填充集合视图

let getAncmntsQuery = PFQuery(className: "Announcement")
    getAncmntsQuery.whereKey("categories", equalTo: self.category.objectId!)
    getAncmntsQuery.includeKey("user")
    getAncmntsQuery.order(byDescending: "startDate")
    if let currentUser = PFUser.current() {
        getAncmntsQuery.whereKey("user", notEqualTo: currentUser)
    }
    getAncmntsQuery.findObjectsInBackground { (result, error) in
        if error == nil{
            self.collectionView.backgroundView = nil
            self.ancmnts = result as? [Announcement]
            self.indicator.stopAnimating()
            self.collectionView.reloadData()
       }
   }
这是cellForItemAt

cell.phoneNumber = ancmnts[indexPath.row].phoneNumber
    cell.title = ancmnts[indexPath.row].title
    cell.price = "\(ancmnts[indexPath.row].price)"
    cell.objectId = ancmnts[indexPath.row].objectId
    cell.ancmntImage.contentMode = .scaleAspectFill
    cell.videoMark.isHidden = true
    cell.ancmntTitle.text = ancmnts[indexPath.row].title
    cell.ancmntPrice.text = "\(ancmnts[indexPath.row].price) TND"
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "yyyy-MM-dd"
    let dateString = dateFormatter.string(from: ancmnts[indexPath.row].startDate as Date)
    cell.ancmntDate.text = dateString
    if !ancmnts[indexPath.row].videoUrl.isEmpty {
        cell.ancmntImage.sd_setImage(with: URL(string: ancmnts[indexPath.row].thumbnailUrl), placeholderImage: UIImage(named:"nophoto"), options: SDWebImageOptions.progressiveDownload, completed: { (image, error, cacheType, url) in
            if image != nil {
                cell.ancmntImage.image = imageByScalingAndCroppingForSize(originalImage: image!, size: cell.ancmntImage.frame.size)
                cell.videoMark.isHidden = false
            }
        })

    }else if ancmnts[indexPath.row].picturesUrl.count > 0 {

        cell.ancmntImage.sd_setImage(with: URL(string: ancmnts[indexPath.row].picturesUrl[0]), placeholderImage: UIImage(named:"nophoto"), options: SDWebImageOptions.progressiveDownload, completed: { (image, error, cacheType, url) in
            cell.ancmntImage.image = imageByScalingAndCroppingForSize(originalImage: image!, size: cell.ancmntImage.frame.size)
        })
    }else{
        cell.ancmntImage.image = UIImage(named: "nophoto")
        cell.ancmntImage.contentMode = .scaleAspectFit
        cell.videoMark.isHidden = true
    }
    if self.ancmnts?[indexPath.row].user["avatarUrl"] != nil {
        cell.ownerPhoto.sd_setImage(with: URL(string: self.ancmnts?[indexPath.row].user["avatarUrl"] as! String), placeholderImage: UIImage(named:"avatar"), options: SDWebImageOptions.progressiveDownload, completed: { (image, error, cacheType, url) in
            cell.ownerPhoto.image = imageByScalingAndCroppingForSize(originalImage: image!, size: cell.ownerPhoto.frame.size)
        })
    }else{
        cell.ownerPhoto.image = UIImage(named: "avatar")
    }

    cell.ownerName.text = self.ancmnts?[indexPath.row].user["username"] as? String
问题是当我注释cellForItemAt中与查询中包含的“用户”相关的部分代码时,集合视图的滚动会滞后

getAncmntsQuery.includeKey("user")

uicollectionview的滚动已返回到正常状态,因此包含的“用户”正在阻止滚动,我正在尝试循环解析查询的“结果”数组,并准备另一个PFUser数组,其中包含“结果”中的所有用户,但仍然存在相同的问题。我的问题是如何解决这个问题?这与我阻塞它的主线程有关吗?如果是,解决方案是什么?在cellForItemAt中使用后台线程

你的头像有多大?通过省略用户密钥,您将不会有任何化身。我怀疑缩放化身图像可能需要一些时间,但是你可以使用时间分析器工具来确认.Parse,就像Parse.com一样?这项服务不是从一月份就停止了吗?我想Parse会很快关闭我自己的serverParse.com中托管的Parse服务器,关闭他们的托管服务,但是开放他们的平台,这样你就可以托管你自己的实例了。你的化身图像有多大?通过省略用户密钥,您将不会有任何化身。我怀疑缩放化身图像可能需要一些时间,但是你可以使用时间分析器工具来确认.Parse,就像Parse.com一样?这项服务不是从一月份就停止了吗?我想Parse将关闭我自己的serverParse.com中托管的Parse服务器,关闭他们的托管服务,但开放他们的平台,以便您可以托管自己的实例。