我有一个问题希望你能帮忙解决。我在我的应用程序中使用 Kingfisher,非常棒。在我的主要用户搜索表格视图中,它完美地加载和缓存图像。但奇怪的是,当我尝试在另一个表格视图中缓存图像时,图像的宽度和高度较大,它不会加载它们。奇怪的是,它通常只加载一两张图片。现在我认为这与图像的大小有关,但我并不这么认为。这是一些代码,显示我正在下载图像并将其存储在 firebase
let storage = Storage.storage().reference().child(uid).child("userPhoto.jpg")
if let uploadData = UIImageJPEGRepresentation(photo, 0.2) {
storage.putData(uploadData, metadata: nil, completion:
{ (metadata, error) in
if error != nil {
print(error!)
return
}
if let imagerUrl = metadata?.downloadURL()?.absoluteString {
let ref = Database.database().reference()
let randomString = NSUUID().uuidString
print(randomString)
let postFeed = [randomString : imagerUrl]
print(self.photos)
self.collectionerView.reloadData()
self.activityer.stopAnimating()
ref.child("users").child(uid).child("profilePhotos").updateChildValues(postFeed)
}
})
}
现在了解我如何将 url 加载/获取到数组中。imageView 的高宽 = 150 * 150
func grabPhotos (uid: String) {
let ref = Database.database().reference()
ref.child("users").child(uid).child("profilePhotos").observeSingleEvent(of: .value, with: {(snapshot) in
if let theirPhotos = snapshot.value as? [String : AnyObject] {
for (_,one) in theirPhotos {
let newPhoto = Photo()
newPhoto.photoUrl = one as? String
print(one as! String)
self.imagers.append(newPhoto)
}
self.tablerView.reloadData()
} else {
self.activityer.stopAnimating()
}
}, withCancel: nil)
}
最后缓存图像
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tablerView.dequeueReusableCell(withIdentifier: "userImagers", for: indexPath) as! UsersImagersTableViewCell
if let imagerl = self.imagers[indexPath.row].photoUrl {
let urler = URL(string: imagerl)
cell.imagerView.kf.setImage(with: urler)
} else {
cell.imagerView.image = UIImage(named: "profiler")
}
return cell
}
总而言之,有些图像会加载,而另一些则不会,尽管我以相同的方式下载和存储它们。我想找到一个解决方案,所以如果你有一个,请回复。对此,我真的非常感激。