Ios 将图像从库保存到域,并在不同的视图控制器中显示

Ios 将图像从库保存到域,并在不同的视图控制器中显示,ios,swift,xcode,realm,uiimagepickercontroller,Ios,Swift,Xcode,Realm,Uiimagepickercontroller,我有一个视图控制器,它有三个字段:UITextField、UIDatePicker和UIImageView。我从库中选择图像并将其显示在myImage上,这样做很好。我想我已经成功地将图像编码为数据,我想我也在保存它,但当我尝试从我的详细信息视图控制器tableview中选择条目时(将数据解码为图像并将其呈现给我的详细信息视图控制器)我收到以下消息“线程1:致命错误:在展开可选值时意外发现零””,在我的解压缩图像函数旁边,我做错了什么? 在didTapSave方法中,我试图将图像转换为数据:

我有一个视图控制器,它有三个字段: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()
        
}

我在imagePickerController方法中添加了这段代码,以将UImage转换为数据“var dataImage=ImageSelected?.pngData()但我如何才能创建一个数据对象并将其保存到域中,就像我在didTapSave函数中处理日期和文本一样?我最初的问题是,我试图在域中保存一个图像,但在阅读文档后,这是无效的,所以我将类中的条目更改为数据,这是一个有效的实体。然后我将我的image转换成数据(或者我想我是这样做的?)但我不知道如何使用这些数据将其保存到域中,以及如何在另一个VC中检索并将其再次转换为图像。您正在评论中添加更多内容和信息;请不要这样做。请编辑问题以包含其他信息。此外,我们需要解析大量代码,因为它的格式很差这个问题可能会被关闭。Realm不太适合图像存储,所以这通常是个坏主意,除非它们很小,例如缩略图。请使用格式化工具正确格式化代码并缩短长度。然后我们可以看一看,看看我们是否能帮上忙。另外两件事1)请通过安全使用optionals
imageData来保护您的代码
是一个问题,就好像它是零一样,代码崩溃(问题就在这里-请继续阅读)2)最重要的是,您在这里期待什么
让imageData=UIImage().jpegData(压缩质量:0.2)
?这是一个空的图像。
解压图像
中的代码没有任何意义,因为它不做任何事情(崩溃除外)。你能澄清一下你想做什么吗?还有那部分代码?@Jay-嗨,Jay,谢谢你对我的查询感兴趣,我想做的是从库中选择一张照片,然后在我的EntryViewController中显示它,我想将所选图像转换为数据并保存到域中。我已在imagePickerController方法中添加了这段代码,以将UImage转换为数据“var dataImage=ImageSelected?.pngData()”,但如何创建数据对象并将其保存到域中,与我在didTapSave函数中处理日期和文本的方式相同?我最初的问题是,我试图在Realm中保存一个图像,但在阅读文档后,这是无效的,因此我将类中的条目更改为数据,这是一个有效的实体。然后我将图像转换为数据(或者我认为我这样做了?)但我不知道如何使用这些数据将其保存到域中,以及如何在另一个VC中检索并将其再次转换为图像;请不要那样做。请编辑问题以包含其他信息。此外,我们需要解析大量代码,因为它的格式很差,很难阅读,所以问题很可能会被解决。Realm不太适合图像存储,所以这通常是个坏主意,除非它们很小,例如缩略图。请使用格式化工具正确格式化代码并缩短长度。然后我们可以看一看,看看我们是否能提供帮助。另外两件事1)请通过安全使用optionals
imageData来保护您的代码
是一个问题,就好像它是零一样,代码崩溃(问题就在这里-请继续阅读)2)最重要的是,您在这里期待什么
让imageData=UIImage().jpegData(压缩质量:0.2)
?这是一个空的图像。
解压图像
中的代码没有任何意义,因为它不做任何事情(崩溃除外)。你能澄清一下你想做什么吗?还有那部分代码?@Jay-你好,谢谢你对我的查询感兴趣,我想做的是从库中选择一张照片,在我的EntryViewController中显示后,我想将所选图像转换成数据并保存在Realm中。