Сохранить изображение из библиотеки в область и представить его в другом контроллере представления

#ios #swift #xcode #realm #uiimagepickercontroller

#iOS #swift #xcode #realm #uiimagepickercontroller

Вопрос:

У меня есть один контроллер представления, который имеет три поля: UITextField, UIDatePicker и UIImageView.Я выбираю изображение из библиотеки и отображаю его на myImage, и это работает нормально.Я думаю, что мне удалось закодировать изображение в данные, и я думаю, что я также сохраняю его, но когда я пытаюсь выбрать запись из моего контроллера просмотра сведений tableview (декодировать данные в изображение и представить его моему контроллеру просмотра сведений) Я получаю это сообщение «Поток 1: фатальная ошибка: неожиданно обнаружено нуль при развертывании необязательного значения«, рядом с моей функцией декомпрессии, что я делаю не так? Внутри моего метода didTapSave я пытаюсь превратить свое изображение в данные:

  let data = myImage.image
 let dataImage = data?.pngData()
 realm.add(newItem1)
 try! realm.commitWrite()
                
 //lastly I call the complitionHandler
    completionHandler1?()
  

наконец, в последнем VC я пытаюсь декодировать его в изображение и представить его:

 func decompressImage() -> UIImage {
        let imageData = UIImage().jpegData(compressionQuality: 0.2)
        let imageDec = UIImage(data: imageData!)
        return imageDec!
        }
    
    
    
//        //we need a formater to change our data into a UIImage
//        static let dataFormatter:
        
        override func viewDidLoad() {
            super.viewDidLoad()

            //we assign
            itemLabel.text = asset?.titleNote
            dateLabel.text = Self.dateFormatter1.string(from: asset!.date)
            
            imagePresent.image = decompressImage()
        
}
  

Комментарии:

1. Я добавил этот фрагмент кода в свой метод imagePickerController, чтобы превратить мой uImage в данные «var dataImage = imageChosen?.pngData()» но как я могу создать объект данных и сохранить его в realm так же, как я делаю с датой и текстом в моей функции didTapSave?

2. Моя первоначальная проблема заключалась в том, что я пытался сохранить изображение в Realm, но после прочтения документации это оказалось недействительным, поэтому я изменил запись в моем классе на Data , которая является допустимой сущностью. Затем я превратил свое изображение в данные (или я так думаю, что сделал?), Но я не знаю, как использовать эти данные, чтобы сохранить их в realm и как извлечь и снова превратить их в изображение в другом VC.

3. Вы добавляете больше контента и информации в комментариях; пожалуйста, не делайте этого. Отредактируйте вопрос, чтобы включить дополнительную информацию, пожалуйста. Кроме того, нам приходится разбирать МНОГО кода, и поскольку он плохо отформатирован и его трудно читать, вопрос, скорее всего, будет закрыт. Realm не очень подходит для хранения изображений, так что это, как правило, плохая идея, если они не маленькие — например, миниатюра. Пожалуйста, используйте инструменты форматирования, чтобы правильно отформатировать код и сократить длину. Затем мы можем взглянуть и посмотреть, сможем ли мы помочь.

4. Две дополнительные вещи 1) Пожалуйста, защитите свой код, безопасно работая с опциями imageData! возникает проблема, как будто она равна нулю, происходит сбой кода (в чем проблема — продолжайте читать) 2) Самое главное, чего вы ожидаете здесь let imageData = UIImage().jpegData(compressionQuality: 0.2) ? Это пустое изображение. Код в decompressImage не имеет никакого смысла, поскольку он ничего не делает (кроме сбоя). Можете ли вы уточнить, что вы пытаетесь сделать в целом, а также с этим разделом кода?

5. @Jay -Привет, Джей, спасибо, что проявили интерес к моему запросу, я пытаюсь выбрать фотографию из библиотеки и после отображения ее в моем EntryViewController я хочу преобразовать выбранное изображение в данные и сохранить его в Realm.