Невозможно сохранить и загрузить изображение с помощью filepath swift 4.2 - PullRequest
0 голосов
/ 11 марта 2019

Я пытаюсь сохранить путь к файлу изображения в строку в 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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...