ios - 尝试快速保存捕获的图像时出错

标签 ios swift camera photos

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

"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:) 即可。

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

关于ios - 尝试快速保存捕获的图像时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32151397/

相关文章:

java - Android 运行时权限(权限被拒绝)

ios - 平移时正确定位相机

ios - UISearchbar 静态表格 View

ios - 在父类(super class)中声明一个可以被子类访问的 block

ios - PFObject 在 Xcode 6.0.1、Yosemite GM3 中没有名为 'saveInBackground' 的成员

swift - 场景转换导致内存泄漏

objective-c - NSVisualEffectView 上的 NSScrollView/NSCollectionView 导致闪烁

安卓 logcat 消息 (E/SMD : DCD on)

ios - Google Places iOS : How to provide context to API for relevant local results

ios - 如何在使用 UIDocumentPickerViewController 选择文档并下载到设备之前在 iCloud 中查找文档的大小