swift - 尝试将图像保存到库时如何解决nil错误?

标签 swift xcode error-handling

我正在构建一个拍照的应用程序,然后您可以选择保存它。但是,在拍照之前,UIImageView为空(无),当您按保存按钮时,它会崩溃,因为您无法保存无照片。我如何进行错误处理,以使UIImageView为nil时不会崩溃。

我曾尝试过 throw 并接住,但无法正常工作。

func tryDataConversion() throws -> Data {
        let imageData = myImage.image!.jpegData(compressionQuality: 1.0)
        return imageData!
    }

我要工作的完整功能代码:
@IBAction func saveImageButton(_ sender: Any) {
            let imageData = myImage.image!.jpegData(compressionQuality: 1.0)
            let compressedImage = UIImage(data: imageData!)
            UIImageWriteToSavedPhotosAlbum(compressedImage!, nil, nil, nil)

            alert(title: "Recent Photo Saved", msg: "Your most recent photo has been saved to your photo library")
    }

在下一行中,它会崩溃,因为展开时会发现nil并且可以解开nil。
let imageData = myImage.image!.jpegData(compressionQuality: 1.0)

并给出以下错误。
Fatal error: Unexpectedly found nil while unwrapping an Optional value:

最佳答案

代替

let imageData = myImage.image!.jpegData(compressionQuality: 1.0)
let compressedImage = UIImage(data: imageData!)
UIImageWriteToSavedPhotosAlbum(compressedImage!, nil, nil, nil)

尝试这个:
if let imageData = myImage.image?.jpegData(compressionQuality: 1.0), 
let compressedImage = UIImage(data: imageData) {
    UIImageWriteToSavedPhotosAlbum(compressedImage!, nil, nil, nil)
} 

关于swift - 尝试将图像保存到库时如何解决nil错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58296517/

相关文章:

objective-c - 在 Objective-C 框架中导入 Swift 类

c# - 在 C# 中存储 SqlServer 的 raiserror 消息

excel - VBA 错误处理 : Catch and Re-throw Not Propagating

iOS - 从系统设置运行应用深层链接

ios - 多个TableView水平滚动

swift - 所需页面的通用 UIToolbar - Xcode 8.3

xcode - 我的 MainMenu.xib 拒绝进入 bundle ,并且我的应用程序崩溃并显示 : "Unable to load nib file: MainMenu, exiting"

go - 如何创建自定义格式化程序并出现 go 1.13 错误?

ios - 如何找到添加力/脉冲后 SCNNode 将落到的位置?

json - 在 Swift 中获取特定的 json 数据