gpt4 book ai didi

ios - "unexpectedly found nil while unwrapping an Optional value"当我尝试通过 AVAssetImageGenerator 获取 CGImage 时

转载 作者:行者123 更新时间:2023-11-29 01:35:26 25 4
gpt4 key购买 nike

我正在尝试从 PHLivePhoto 制作 UIImage 的缩略图,以便我可以在拍摄图片之前或之后获得一些信息。我正在努力解决这个错误:

unexpectedly found nil while unwrapping an Optional value 

cgImage = try? imgGenerator.copyCGImageAtTime(CMTimeMake(avAsset.duration.value / 3, avAsset.duration.timescale), actualTime: nil)

我对 swift2 语法非常陌生。请帮我获取缩略图。

func makeThubnailsFromLivePhoto(livePhoto: PHLivePhoto) -> UIImageView {
let assetResource = PHAssetResource.assetResourcesForLivePhoto(livePhoto)
let avAsset = AVURLAsset(URL: NSURL(fileURLWithPath: assetResource[1].assetLocalIdentifier))
var err: NSError? = nil
let imgGenerator = AVAssetImageGenerator(asset: avAsset)
var cgImage: CGImage?
var imageView: UIImageView?
cgImage = try? imgGenerator.copyCGImageAtTime(CMTimeMake(avAsset.duration.value / 3, avAsset.duration.timescale), actualTime: nil)
let uiImage = UIImage(CGImage: cgImage!)
imageView = UIImageView(image: uiImage)

imageView!.frame = CGRect(x: 0, y: 0, width: self.view.bounds.width/2, height: self.view.bounds.height/2)
return imageView!
}

最佳答案

您确定这是引发错误的行吗?我更希望是这一行:

    let uiImage = UIImage(CGImage: cgImage!)

只要创建图像时出错,就会崩溃。你要么需要在这里使用 do/try/catch 来捕获错误并处理它们,要么你需要使用 guard-let 来验证 cgImage 不是 nil。任何时候你使用!,你都在说“我用我的程序的生命打赌这不是零。”

同样,这一行没有意义:

    var imageView: UIImageView?

您稍后可以从不会失败的构造函数中分配 imageView。但它会导致您使用 imageView!,这可能很危险(在本例中恰好不是这样,但很难知道这一点)。尽可能避免 !

一般来说,您应该避免这种 var x: Type? 后跟 x = ... 的模式。相反,请使用模式 let x = ... 类型推断是 Swift 的重要组成部分。

关于ios - "unexpectedly found nil while unwrapping an Optional value"当我尝试通过 AVAssetImageGenerator 获取 CGImage 时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33015834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com