Почему образы Firebase (через SdWebImage) загружаются медленно? - PullRequest
1 голос
/ 14 марта 2020

с использованием Firebase и SD веб-изображения. Таким образом, этот код работает, но он всегда имеет 2 или 3 изображения, которые загружаются долго? Возможно, я ошибаюсь, но может случиться так, что он загружается медленнее, когда я не прокручиваю экран. Это может быть просто ошибочным суждением, но я кое-что заметил.

class peopleWhoLikedMe: UITableViewController, CLLocationManagerDelegate{

let locationManager = CLLocationManager()
var latestLocation: [String: Double]?
let locCoord1 = CLLocation()

@IBOutlet weak var border: UIImageView!

func printPersonInfo(uid: String) {

    DispatchQueue.main.async{

    print(uid)
    let usersRef = Database.database().reference().child("people")
    let thisUser = usersRef.child(uid)
    thisUser.observeSingleEvent(of: .value, with: { snapshot in
        let photoPosts = snapshot.childSnapshot(forPath: "PhotoPosts").value as? String ?? "No PhotoPosts"
        let education = snapshot.childSnapshot(forPath: "Education").value as? String ?? "No Education"
        let whatIamConsideringBuying = snapshot.childSnapshot(forPath: "WhatIamConsideringBuying").value as? String ?? "No WhatIamConsideringBuying"
        print(photoPosts, education, whatIamConsideringBuying)
        let p = Usery(education: education, whatIamConsideringBuying: whatIamConsideringBuying, photoPosts: photoPosts)
        self.person.insert(p, at: 0)
         self.table.reloadData()

    })
}

}
var immy: UIImage!
var imageURLs = [String]()

var refArtists : DatabaseReference!

@IBOutlet weak var table: UITableView!
var people = [Userx]()
var person = [Usery]()

public override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {


    return person.count

}

public override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! ViewControllerTableViewCell

    let immy = cell.viewWithTag(2) as! UIImageView

    let person1: Usery = person[indexPath.row]


    cell.lblName1.text = person1.education
    cell.lblgenre1.text = person1.whatIamConsideringBuying

    if let photoPosts = person1.photoPosts {
        let url = URL(string: photoPosts)
        immy.sd_setImage(with: url)
    }

    return cell

}

Выше приведен единственный код, который мне кажется уместным. Я просто добавляю нижеприведенное на случай, если мне чего-то не хватает.

    refArtists.observe(DataEventType.value,  with: {snapshot in

        if snapshot.childrenCount>0{

            self.people.removeAll()

            for people in snapshot.children.allObjects as! [DataSnapshot] {
                if people.key != thisUsersUid { //do not add this users info to the array
                    let peopleObject = people.value as? [String: AnyObject]
                    let peopleEducation = peopleObject?["Education"] as? String
                    let peopleWhatIamConsideringBuying = peopleObject?["WhatIamConsideringBuying"] as? String
                    let peoplePhotoPosts = peopleObject?["PhotoPosts"]  as? String
                    let peopleimageDownloadURL = peopleObject?["imageDownloadURL"] as? String
                    let peoplepostID = peopleObject?["postID"] as? String
                    let peoplecaption = peopleObject?["caption"] as? Int

                    let peoplepeopleWhoLike = peopleObject?["peopleWhoLike"] as? String
                    let peopleCoordinates = peopleObject?["Coordinates"] as? String
                                            ///belowIsJustJunkCode
                    let userId = people.key
                    let coordSnap = people.childSnapshot(forPath: "Coordinates")
                    let lat = coordSnap.childSnapshot(forPath: "latitude").value as! CLLocationDegrees
                    let lon = coordSnap.childSnapshot(forPath: "longitude").value as! CLLocationDegrees
                    let locCoord = CLLocation(latitude: lat, longitude: lon)
                    print(userId, "coords: \(lat)  \(lon)")



                    let distance = locCoord.distance(from: self.locCoord1)
                    print(distance, "distance")


                    let peopl = Userx(Education: peopleEducation, WhatIamConsideringBuying: peopleWhatIamConsideringBuying, PhotoPosts: peoplePhotoPosts, imageDownloadURL: peopleimageDownloadURL, postID: peoplepostID, peopleWhoLike: peoplepeopleWhoLike, Coordinates: peopleCoordinates, distance:distance, caption: peoplecaption)

                        self.people.append(peopl)
...