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

时间:2015-08-22 01:30:49

标签: ios swift camera photos

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

  

"在展开时出乎意料地发现没有"

我的代码如下 -

//  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

的任何值

1 个答案:

答案 0 :(得分:1)

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

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

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

最后,你真的不应该在更改块中拥有所有额外的东西。只做改变而不再做。其他东西应该在完成块中。