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