0

ALAssetsLibrary を使用して SavedPhotosAlbum に画像を保存しようとすると、特に writeImageToSavedPhotosAlbum メソッドを使用しているときに、奇妙な問題が発生します。

基本的に私の問題は、完了ブロック内で NSURL が null を返すことです...エラーはありませんが、URL は null です。

メソッドは次のとおりです。

UIImage *imageToSave = [libraryPicture imageFromCurrentlyProcessedOutput];


  ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
  [library writeImageToSavedPhotosAlbum:[imageToSave CGImage] orientation:ALAssetOrientationUp  completionBlock:^(NSURL *assetURL, NSError *error) {

  NSLog(@"AssetURL: %@", assetURL);

  if(!error) {
    NSLog(@"\t ! Error");
    NSLog(@"\t Error: %@", [error localizedDescription]);
    NSLog(@"\t Error code %d", [error code]);
  }

  if(error != nil) {
    NSLog(@"\t ERROR != NIL");
    NSLog(@"\t Error - Image Failed To Save With Error: %@", [error localizedDescription]);
    NSLog(@"\t Error code %d", [error code]);
  }

  if(error == nil) {
    NSLog(@"\t ERROR == NIL");
  }

  }];

ほんの数行離れた (別のスイッチの場合) 動作する非常によく似たメソッドを使用し、ほぼ同じ完了ブロック内に URL を出力します (呼び出されるメソッドは異なります)。

[stillCamera capturePhotoAsJPEGProcessedUpToFilter:selectedFilter withCompletionHandler:^(NSData *processedJPEG, NSError *error) {
  ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
  [library writeImageDataToSavedPhotosAlbum:processedJPEG metadata:stillCamera.currentCaptureMetadata completionBlock:^(NSURL *assetURL, NSError *error2) {
    if (error2 != nil) {
      NSLog(@"ERROR: the image failed to be written");
    }
    else {
      NSLog(@"PHOTO SAVED FROM STILL CAMERA - assetURL: %@", assetURL);
    }

  }];
}];
4

1 に答える 1