Добавление строки URL в массив URL, а затем получение данных изображения URL для TableView - PullRequest
0 голосов
/ 06 ноября 2019

Хорошо, поэтому я следую учебному пособию по YouTube, моя конечная цель - использовать NSCache. У меня есть эта функция под названием photoQuery (). PhotoQuery () ищет имя пользователя в usernameArray. usernameArray имеет два имени пользователя. Затем я запускаю поиск URL, чтобы найти изображение, и добавляю его в UIImageArray с именем messageImageArray. Для двух имен пользователей в usernameArray ... я получаю три изображения, добавленные в мой imageArray.

Вывод показывает очевидную ошибку в моей логике, но я не понимаю: печать (URL) должна печататься только дважды. ... но он печатает три раза. Печать (URLArray.count) должна печататься только дважды ... 1, затем 2 ... однако она печатает 1, 2, 2 ... Печать (messageImageArray) должна печатать только два изображения. ... но он печатает три ... Из этого первый URL вызывается дважды, чтобы отобразить одно и то же изображение, а второй URL вызывается только один раз. Может кто-нибудь решить это?

func photoQuery () {
    for username in self.usernameArray {
        let photoQuery = PFQuery(className: "UserPhoto")
        photoQuery.whereKey("username", equalTo: username)
        photoQuery.findObjectsInBackground(block: { (objects: [PFObject]?,error: Error?) in
        if let objects = objects {
            for object in objects {
                if error == nil {
                let userImageFile = object["photo"] as? PFFileObject
                let urlString = userImageFile?.url as! String
                self.urlArray.append(urlString)
            }
        }
            for url in self.urlArray {
                print(self.urlArray.count)
            print(url)
            if let url = URL(string: url) {
            let data = try? Data(contentsOf: url)
            if let imageData = data {
                self.messageImageArray.append(UIImage(data: imageData)!)
                print(self.messageImageArray)
                        }
                    }
                }
            }
        })
    }
}
...