尝试在 swift 中保存捕获的图像时出错

Error when trying to save a captured image in swift

在我的项目中,我正在捕获图像。但是当它开始保存图像时,应用程序崩溃并出现 -

错误

"unexpectedly found nil while unwrapping"

我的代码如下-

//  Library Assets
    var assetCollection: PHAssetCollection!
    var photoAsset: PHFetchResult!

    let saveImage = UIImage(CGImage: cgImage, scale: 1, orientation: UIImageOrientation.Down)

                if let actualSaveImage = saveImage {
                //  Save image
                PHPhotoLibrary.sharedPhotoLibrary().performChanges({

                    let request = PHAssetChangeRequest.creationRequestForAssetFromImage(actualSaveImage)
                    let assetPlaceholder = request.placeholderForCreatedAsset
                    let albumChangeRequest = PHAssetCollectionChangeRequest(forAssetCollection: self.assetCollection, assets: self.photoAsset)
                    albumChangeRequest.addAssets([assetPlaceholder])
                    self.buttonCapture.hidden = false
                    self.activityIndicator.stopAnimating()
                    self.lastShotFlag = false
                    }, completionHandler: {(success, error)in
                        NSLog("\nSave Image -> %@", (success ? "Success" : "Error!"))
                })
                }
                else {
                    NSLog("\nProblem in saveImage. It's nil.")
                }

调试后,我似乎没有得到常量 albumChangeRequest

的任何值

问题是您从未给 self.assetCollectionself.photoAsset 任何值,因此它们为零。因此,当您尝试在 PHAssetCollectionChangeRequest 初始化程序中使用它们时,您会崩溃。

顺便说一句,如果您只想将图像保存到相机胶卷中,则不需要那么多代码。只需创建请求即可。

或者,如果您想将图像保存到相机胶卷和相册中,则无需调用 PHAssetCollectionChangeRequest(forAssetCollection:assets:) 即可。

最后,您真的不应该在变更块中拥有所有这些额外的东西。只需进行更改,仅此而已。其他的东西应该在完成块中。