好的,所以我正在关注youtube b / c上的教程,我的最终目标是使用NSCache。我有一个称为photoQuery()的函数。 PhotoQuery()在usernameArray中查找用户名。 usernameArray有两个用户名。 然后,我运行URL查找以查找图像并将图像附加到名为messageImageArray的UIImageArray。对于usernameArray中的两个用户名...我将三个图像添加到了imageArray中。
输出显示出我的逻辑上明显的错误,但我不明白: 打印(URL)应该只打印两次...但是它打印三遍 print(URLArray.count)应该只打印两次...,然后是2 ...,但是它会打印1、2、2 ... print(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)
}
}
}
}
})
}
}