안녕하세요. 학습 프로젝트로 사진 앨범 앱을 만들고 있는데 PHPhotoLibrary.shared().performChangesAndWait
과 관련된 문제가 있습니다. 주요 문제는 그 코드가 PHPhotoLibrary.shared().performChangesAndWait
인 saveImage 메소드를 사용할 때입니다. 이미지를 저장하기 전에 PHPhotoLibrary.shared().performChangesAndWait
이 종료되기 전에이 메서드가 종료됩니다. 문서가 완료 될 때까지 기다려야한다고 말하는 performChangesAndWait
메서드를 사용하는 경우에도 코드가 비동기 적으로 실행되는 것 같습니다. 앱이 처음으로 실행처음 앨범을 실행할 때 맞춤 앨범에 사진을 저장하지 못합니다.
func saveImage(_ image: UIImage) ->Bool {
print("Executing saveImage")
var result:Bool = false
if assetCollection == nil {
print("the album is nil")
return result
}
print("saveImage: we will start saving the image")
//TODO: the return false is happening before the photo is save.
do
{
try PHPhotoLibrary.shared().performChangesAndWait({
let assetChangeRequest = PHAssetChangeRequest.creationRequestForAsset(from: image)
let assetPlaceHolder = assetChangeRequest.placeholderForCreatedAsset
let albumChangeRequest = PHAssetCollectionChangeRequest(for: self.assetCollection)
let enumeration: NSArray = [assetPlaceHolder!]
albumChangeRequest!.addAssets(enumeration)
print("saveImage: image was save without issues")
result = true
print("saveImage: result value after saving the image: \(result)")
})
}
catch let error
{
result = false
print("saveImage: there was a problem: \(error.localizedDescription)")
}
print("saveImage: result value before exiting the method: \(result)")
return result
}
기본적 때 다시 반환 결과는 이미지 블록 완료를 저장하기 전에 실행 가져옵니다 여기
내 클래스에서 saveImage 방법의 코드입니다.실제로 performChangesAndWait 메서드가 실제로 완료 될 때까지 saveImage 메서드가 실제로 기다릴 수있는 방법이 있습니까?
미리 도움을 주셔서 감사합니다.
트릭을 많이 주셔서 감사합니다. – JuValencia