在我的项目中,我正在捕捉图像。但是当它开始保存图像时,应用程序崩溃并出现错误 -
"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.assetCollection
或 self.photoAsset
任何值,因此它们为零。因此,当您尝试在 PHAssetCollectionChangeRequest 初始化程序中使用它们时,您会崩溃。
顺便说一句,如果您只想将图像保存到相机胶卷中,则不需要所有这些代码。仅创建请求就足够了。
或者,如果您想将图像保存到相机胶卷和相册中,则无需调用 PHAssetCollectionChangeRequest(forAssetCollection:assets:)
即可。
最后,您真的不应该在变更 block 中拥有所有这些额外的东西。只需进行更改,仅此而已。其他的东西应该在完成 block 中。
关于ios - 尝试快速保存捕获的图像时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32151397/