【发布时间】:2019-10-22 10:29:12
【问题描述】:
[][!我想使用图像缓存从 Firebase 的下载 url 加载图像我如何才能在我的图像被加载的地方创建继承我想我在某处缺少 OOP 概念。我的图像视图是滑动标签,如何创建一个可以在我的视图上显示图像的实例。
导入 UIKit
导入 Firebase
类 swipeLabelViewController: UIViewController {
@IBOutlet weak var UserAgeText: UILabel!
var user:User? {
didSet {
let userNameSwipe = user?.userName
userNameLabel.text = userNameSwipe
let userAgeSwipe = user?.userAge
UserAgeText.text = userAgeSwipe
guard let profileImageUrl = user?.profileImageUrl else {
返回 } profileImageView.loadImage(with: profileImageUrl)
print(profileImageUrl)
// let userFetchedImage = user?.profileImageUrl
// swipeLabel.image = userFetchedImage
// self.swipeLabel.image = UIImage(contentsOfFile: profileImageUrl)
}
}
var profileImageView: CustomImageView = {
let iv = CustomImageView()
return iv
}()
var imageI : UIImage!
// var swipepic = CustomImageView()
@IBOutlet weak var swipeLabel: UIImageView!
@IBOutlet weak var userNameLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
swipeLabel.image = imageI
let gesture = UIPanGestureRecognizer(target: self, action:
选择器(wasDragged(gestureRecognizer:)))
swipeLabel.addGestureRecognizer(gesture)
fetchCurrentUserData()
}
// 用户模型类``
class User {
// attributes getting users info so i can set up from firebase
var userName:String!
var userAge:String!
var uid:String!
var profileImageUrl: String!
init (uid:String,dictionary:Dictionary) {
self.uid = uid
if let userName = dictionary [ "userName" ] as? String{
self.userName = userName
}
if let userAge = dictionary [ "userAge" ] as? String{
self.userAge = userAge
}
如果让 profileImageUrl = dictionary["profileImageURL"] as?字符串 {
self.profileImageUrl = profileImageUrl
}
}
}
// 最后是图片缓存类customImageView
导入基础
导入 UIKit
var imageCache = String: UIImage
类 CustomImageView: UIImageView {
var lastImgUrlUsedToLoadImage: String?
func loadImage(with urlString: String) {
// set image to nil
self.image = nil
// set lastImgUrlUsedToLoadImage
lastImgUrlUsedToLoadImage = urlString
// check if image exists in cache
if let cachedImage = imageCache[urlString] {
self.image = cachedImage
return
}
// url for image location
guard let url = URL(string: urlString) else { return }
// fetch contents of URL
URLSession.shared.dataTask(with: url) { (data, response, error) in
// handle error
if let error = error {
print("Failed to load image with error",
error.localizedDescription) }
if self.lastImgUrlUsedToLoadImage != url.absoluteString {
return
}
// image data
guard let imageData = data else { return }
// create image using image data
let photoImage = UIImage(data: imageData)
// set key and value for image cache
imageCache[url.absoluteString] = photoImage
// set image
DispatchQueue.main.async {
self.image = photoImage
}
}.resume()
}
}
没有错误,我只是在我的 swipelabel UIImage 上看不到图像
【问题讨论】:
-
这个问题有点不清楚。此外,您还没有在任何地方定义 var
profileImageUrl,我们也不知道 `loadImage' 做了什么。请花点时间查看How do I ask a good question? 和How to create a Minimal, Complete, and Verifiable example -
@jay 检查用户 profileImageUrl 的模型在我的模型中我已附上图片谢谢
-
你在问如何Download an Image from Firebase Storage?此外,将代码和结构包含为文本而不是链接和图像也是一个好主意。见images and links are evil
-
@jay ok jay 给我一分钟我已经上传了所有代码
-
几件事;在使用本网站时,我们需要能够清楚地阅读您的代码,因此格式化非常重要。第二件事是我们不想看到你所有的代码——只是不工作的部分。请参阅我上面的 cmets 并请查看这两个链接。照原样,这个问题很可能会被否决并可能被关闭。
标签: ios swift firebase firebase-authentication