Я пытаюсь сохранить путь к файлу изображения в строку в CoreData, а затем перезагрузить его в отдельном viewController. Я не получаю никаких ошибок прямо сейчас. Похоже, что сохранить хорошо, все, кроме изображения не загружается в UICollectionView.
Вот кнопка сохранения от контроллера дочернего представления, в котором сохраняется путь к файлу.
@objc func saveDataButtonTapped(sender: UIBarButtonItem) {
let fileManager = FileManager.default
let documentsURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first!
let documentPath = documentsURL.path
let filePath = documentsURL.appendingPathComponent("1.png", isDirectory: true)
pet.profilePicPath = filePath.path
do {
let files = try fileManager.contentsOfDirectory(atPath: "\(documentPath)")
for file in files {
// Delete duplicate image if one already exists in this path
if "\(documentPath)/\(file)" == filePath.path {
try fileManager.removeItem(atPath: filePath.path)
}
}
} catch {
print("Could not add image from document directory: \(error)")
}
do {
if let pngImageData = profilePicImageView.image!.pngData() {
try pngImageData.write(to: filePath, options: .atomic)
}
} catch {
print("couldn't write image")
}
pet.profilePicPath = documentPath
PersistenceManager.shared.save()
_ = navigationController?.popViewController(animated: true)
}
Это функция cellForItemAt indexPath в главном контроллере представления, в которую, как ожидается, будет загружено изображение.
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "HorCell", for: indexPath) as? PRMainHorizontalCollectionViewCell else {
return UICollectionViewCell()
}
let pet = pets[indexPath.row]
if FileManager.default.fileExists(atPath: "\(String(describing: pet.profilePicPath))/1.png") {
if let contentsOfFilePath = UIImage(contentsOfFile: "\(String(describing: pet.profilePicPath))/1.png") {
cell.petImage.image = contentsOfFilePath
}
}
return cell
}