У меня есть ссылка на изображение проекта в Firebase, и я хочу отредактировать фотографию, заменив данные в ссылке на хранилище, не меняя ссылку на ссылку.Я успешно делаю это, и представление изображения также обновляется, когда пользователь выбирает новое изображение.Однако, когда я возвращаюсь в контроллер навигации, мой tableView все еще показывает то же изображение - и когда я нажимаю на элемент tableView - изображение проекта, кажется, не обновляется.
Единственный способ, которым изображение иОбновление данных таблицы просмотра происходит, когда я удаляю симулятор со своего компьютера и повторно добавляю его.Вот некоторый мой код для того, как я заполняю tableView - код отлично работает для добавляемых новых проектов, но измененная часть не работает - я вызываю эту функцию в viewwillappear, чтобы заполнить tableview:
func checkForUpdates(uid: String) {
handler = db.collection("Projects").whereField("UID", isEqualTo: "\(uid)").addSnapshotListener { snapShot, error in
guard let document = snapShot else {return}
if document.count > 0 {
document.documentChanges.forEach { difference in
if difference.type == .added {
if let project = Project(dictionary: difference.document.data()) {
self.projectArray.append(project)
DispatchQueue.main.async {
self.tableView.reloadData()
}
}
else {return}
}
if difference.type == .modified {
DispatchQueue.main.async {
self.loadData(uid: uid)
self.tableView.reloadData()
}
return
}
if difference.type == .removed {return}
else {return}
}
}
else {
print("no documents to show")
}
}
}
Когда я перехожу к просмотру определенного проекта (нажав на tableviewcell) - вот мой код
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "viewProject" {
if let vc = segue.destination as? ViewMyProject {
vc.selectedProject = self.selectedProject!
}
else {return}
}
else {return}
}
Вот мой код того, как я устанавливаю ячейки в файле xib
func setProject(project: Project) {
projectName.text = project.title
projectCategory.text = project.category
projectDate.text = project.timeStamp.dateValue().dateToString(style: .short)
projectImage!.sd_setImage(with: URL.init(string: project.imageLink)) { (image, error, cacheType, url) in
if error != nil {
print ("Error setting project cell image")
return
}
else {
print("Successfuly set project cell image")
}
}
}
И вот как я загружаю проект после нажатия на ячейку (я называю это в viewWillAppear)
func loadProject(project: Project) {
filterProjectFeedback(project: project)
if projectImage.image == nil {projectImage.sd_setImage(with: URL.init(string: project.imageLink))}
projectDescription.text = project.description
}
Большое спасибо заранее - я чувствую, что это связано с сильной ссылкой - но яне могу сделать мою переменную "projectArray" слабой