Swift 如何从firebase数据库获取下载url并将其加载到不同viewcontroller的tableview imageview中?

Swift 如何从firebase数据库获取下载url并将其加载到不同viewcontroller的tableview imageview中?,swift,Swift,我已成功将我的下载URL从firebase存储引用到firebase数据库。我正在创建一个事件提要,从自动id(eventdate、EventLocation、ImagesUrl、EventTitle)中从“Church events”节点提取数据。我想在表视图中加载每篇文章,并在autoid下加载相关信息。除了需要从ImageUrl字段中的URL检索的图像外,我可以加载所有内容。目前我有从数组加载的静态图像。我是swift的新手,非常感谢您的帮助,请问是否有可能在这方面获得帮助 导入UIKit

我已成功将我的下载URL从firebase存储引用到firebase数据库。我正在创建一个事件提要,从自动id(eventdate、EventLocation、ImagesUrl、EventTitle)中从“Church events”节点提取数据。我想在表视图中加载每篇文章,并在autoid下加载相关信息。除了需要从ImageUrl字段中的URL检索的图像外,我可以加载所有内容。目前我有从数组加载的静态图像。我是swift的新手,非常感谢您的帮助,请问是否有可能在这方面获得帮助

导入UIKit
导入FirebaseAuth
导入FirebaseDatabase
类事件ViewController:UIViewController、UITableViewDelegate、UITableViewDataSource{
@IBVAR表格视图:UITableView!
var eventsRef:数据库引用?
var eventsDatabaseHandle:数据库句柄?
var eventsTitles=[String]()
var eventTimestamps=[String]()
var eventsLocations=[String]()
var eventsImages=[UIImage]()
@IBOutlet弱var addEventsButton:UIBarButtonim!
@IBMOutlet弱var sliderCollectionView:UICollectionView!
@IBVAR页面视图:UIPageControl!
var imgArr=[UIImage(名为:“1”),
UIImage(名称:“2”),
UIImage(名为:“3”),
UIImage(名称:“4”),
UIImage(名称:“5”),
UIImage(名称:“6”),
UIImage(名为:“7”),
UIImage(名称:“8”),
UIImage(名为:“9”),
UIImage(名称:“10”)]
var timer=timer()
变量计数器=0
重写func viewDidLoad(){
super.viewDidLoad()
loadImages()
eventsRef=Database.Database().reference()
tableView.reloadData()
tableView.transform=CGAffineTransform(旋转角度:-CGFloat.pi)
tableView.delegate=self
tableView.dataSource=self
eventsDatabaseHandle=eventsRef?.child(“教堂事件”).observe(.childAdded,带:{(snaphot)in
让eventPost=snaphot.value为![String:Any]
self.eventTimestamps.append(eventPost[“eventdate”]as!String)
self.eventsTitles.append(eventPost[“eventtitle”]as!String)
self.eventsLocations.append(eventPost[“eventlocation”]作为!字符串)
self.tableView.reloadData()
})
//**************************************************************************
如果(Auth.Auth().currentUser!.displayName!=“Neil Leon”){
self.addEventsButton.tintColor=UIColor.clear
self.addEventsButton.isEnabled=false
}
否则{
self.addEventsButton.isEnabled=true
}
}
func loadImages(){
eventsImages=imgArr as![UIImage]
}
func tableView(tableView:UITableView,numberofrowsinssection:Int)->Int{
返回eventsTitles.count
}
func tableView(tableView:UITableView,cellForRowAt indexath:indexPath)->UITableViewCell{
将cell=tableView.dequeueReusableCell(标识符为:“events”)设为!EventsTableViewCell
让image=eventsImages[indexPath.row]
cell.flyerImages.image=图像
cell.eventTitle.text!=eventsTitles[indexPath.row]
cell.eventDate.text!=事件时间戳[indexath.row]
cell.eventLocation.text!=eventsLocations[indexPath.row]
cell.transform=CGAffineTransform(旋转角度:CGFloat.pi)
返回单元
}
}

您需要做的是请求存储在数据库中的url
字符串
,获取返回的
数据
,并将该
数据
转换为
UIImage

override func viewDidLoad(){
...
self.eventsLocations.append(eventPost[“eventlocation”]作为!字符串)
让task=URLSession.shared.dataTask(其中:URL(string:eventPost[“ImageuUrl”]as!string)!{(数据、响应、错误)位于
如果让image:UIImage=UIImage(数据:data!){
self.eventsImages.append(图像)
}
}
task.resume()
self.tableView.reloadData()
...
}

这应该适合您,但我建议创建一个自定义的
事件
类,并使用一个
事件
对象数组作为表视图的数据源。如果您想问另一个问题,概述如何这样做,我可以针对您的具体情况进行解释,否则,请看这里:

我注意到的第一件事,而不是为
事件缝合线
事件时间戳
事件位置
事件图像
使用单独的数组,您可能应该将名为
Event
的自定义对象,以及
title
timeStamp
location
image
作为该类型的属性。然后您可以使用
var churchEvents=[Event]()
作为表视图的单一数据源。您好,David,这太棒了,谢谢。我现在肯定可以加载图像了。然而,每次我发布一个事件时,前面的帖子都会显示,而不是当前的帖子。你知道为什么会这样吗?我不确定我是否有足够的背景。这可能需要一个新的问题。嗨,David,我添加了您推荐的代码,我首先觉得它似乎在工作,但现在,我的表视图中没有填充任何数据。我可以看到它被上传到我的数据库中,但它没有加载到我的表视图中。嗨,David,你能帮我创建自定义事件吗?我可以,尽管它可能会保证创建一个新问题。今天早上我会检查swift标签,如果我看到了,我会继续为你回答。对于现在这个问题来说,这有点离题了。