2016-04-09 9 views
3

Ich versuche, eine UIImage in die Kamera zu speichern. Apple hat die UIImageWriteToSavedPhotosAlbum veraltete, daher verwenden wir vermeiden, dass (das gleiche für ALAssets), die PhotoLibrary zu verwenden zwingt.Fehler beim Speichern eines UIImage auf der Kamera mit PHPhotoLibrary

Dies ist der Code Ich verwende:

Definition:

var rollCollection : PHAssetCollection!; 

Initialisierung:

let result = PHAssetCollection.fetchAssetCollectionsWithType(.SmartAlbum, subtype: .SmartAlbumUserLibrary, options: nil); 
rollCollection = result.firstObject as? PHAssetCollection; 

Code, um das Bild zu speichern:

if (rollCollection != nil){ 
     PHPhotoLibrary.sharedPhotoLibrary().performChanges({ 
      let assetRequest = PHAssetChangeRequest.creationRequestForAssetFromImage(
       self.originalImg!); 

      let albumChangeRequest = PHAssetCollectionChangeRequest(forAssetCollection: self.rollCollection!); 
      let assetPlaceHolder = assetRequest.placeholderForCreatedAsset; 
      albumChangeRequest!.addAssets([assetPlaceHolder!]) 

      }, completionHandler: { success, error in 
       dispatch_async(dispatch_get_main_queue(), { 
        print ("\(error!)"); 
        if (!success){ 
         self.presentViewController(self.alertCantSave!, animated: false, completion: nil); 
        } 
        else { 
         self.presentViewController(self.alertSaved!, animated: false, completion: nil); 
        } 
       }); 

     }) 
    } 
    else { 
     dispatch_async(dispatch_get_main_queue(), { 
     self.presentViewController(self.alertCantSave!, animated: false, completion: nil); 
     }); 
    } 

Jedes Mal, Ich bin tr Um ein Bild zu speichern bekomme ich folgende Fehlermeldung:

Error Domain=NSCocoaErrorDomain Code=-1 "(null)" 

Irgendwelche Ideen? Ich konnte keine Erklärung finden, und überall suchte ich nach einem Code-Schnipsel ähnlich meinem (einschließlich Apples Dokumentation: https://developer.apple.com/library/ios/documentation/Photos/Reference/PHPhotoLibrary_Class/)

Danke.

Antwort

3

Ich fand gerade diese Frage nach ein paar Stunden für die exakt gleiche Sache suchen.

Spiele um ein wenig ich in der Lage war, mit einer Antwort zu kommen, das für mich gearbeitet, so dass ich es hier nur für den Fall teile jemand für etwas anderes kommt sucht ähnlich in der Zukunft.

// Make sure the image is not nil 
guard let image = image else { 
    // No image here... 
    return 
} 

// Perform changes to the library 
PHPhotoLibrary.sharedPhotoLibrary().performChanges({ 
    // You only need to create the request, there is no need to define the placeholder 
    // nor to add the asset because swift does not like it when you try to modify the camera roll. 
    PHAssetChangeRequest.creationRequestForAssetFromImage(image) 

}, completionHandler: { success, error in 
    // Same as what you have... 

}) 

Schauen Sie sich diese Antwort, wenn Sie ein Beispiel mögen, wie Bilder, um benutzerdefinierte Alben zu speichern und Bilder von einem benutzerdefinierten Album abzufragen. Save images with PHImageManager

Verwandte Themen