在我的项目中,我正在捕捉图像。但是当它开始保存图像时,应用程序崩溃时出现错误 -
"在展开时出乎意料地发现没有"
我的代码如下 -
// 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
的任何值答案 0 :(得分:1)
问题是你从未给过self.assetCollection
或self.photoAsset
任何值,所以它们是零。因此,当您尝试在PHAssetCollectionChangeRequest初始化程序中使用它们时,会崩溃。
顺便说一句,如果您只想将图像保存到相机胶卷中,则不需要所有代码。只需创建请求即可。
或者,如果您想将图像保存到相机胶卷和相册中,则无需致电PHAssetCollectionChangeRequest(forAssetCollection:assets:)
即可。
最后,你真的不应该在更改块中拥有所有额外的东西。只做改变而不再做。其他东西应该在完成块中。