2016-07-10 2 views
0

Mon code utilise ALAssetsLibrary pour obtenir/enregistrer des images sur iPhone jusqu'à présent. Et actuellement je passe de ALAssetsLibrary à PHPhotoLibrary.Code d'erreur lors de la sauvegarde d'images par PHPhotoLibrary

Dans la migration je cherchais des codes d'erreur tels que, ALAssetsLibraryWriteBusyError et ALAssetsLibraryWriteDiskSpaceError, mais je ne pouvais pas. Lorsque mon application ne peut pas enregistrer les images. Je veux que les utilisateurs connaissent la raison en affichant une boîte de dialogue d'erreur.

Mon code d'enregistrement d'images est comme ci-dessous,

- (void)savePhotoFile:(NSURL *)fileURL completion:(savePhotoFileCompletion)completion 
{ 
    [[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{ 

      PHAssetChangeRequest *assetChangeRequest; 
      assetChangeRequest = [PHAssetChangeRequest creationRequestForAssetFromImageAtFileURL:fileURL]; 

      if (self.assetCollection) { 
       PHAssetCollectionChangeRequest *assetCollectionChangeRequest = 
        [PHAssetCollectionChangeRequest changeRequestForAssetCollection:self.assetCollection]; 
       [assetCollectionChangeRequest addAssets:@[ [assetChangeRequest placeholderForCreatedAsset] ]]; 
      } 
     } 

     completionHandler:^(BOOL success, NSError *_Nullable error) { 
      DBGLog(@"success=%@, error=%@", (success ? @"YES" : @"NO"), error); 
      completion(success, error); 
     }]; 
} 

Est-ce que quelqu'un sait les codes d'erreur correspondants dans PHPhotoLibrary? J'apprécierais vraiment toute information sur ce problème.

Répondre

0

+ creationRequestForAssetFromVideoAtFileURL: est pour la vidéo. Je pense que vous devriez utiliser + creationRequestForAssetFromImageAtFileURL: à la place.

+0

Comme d'habitude, vous pouvez vérifier le code NSError, les propriétés userInfo collectent des informations d'erreur et préparent un message lisible pour les utilisateurs. –

+1

@ AliKıran Oui, je connais l'userInfo dans NSError. J'aimerais connaître les informations d'erreur ** correspondantes ** sur ALAssetsLibraryWriteDiskSpaceError et ALAssetsLibraryWriteBusyError. Si possible, j'implémente le code de tentative en interne. –