2016-05-02 10 views
2

Jetzt, da AssetsLibrary veraltet ist, sollen wir das Fotorahmen verwenden, speziell PHPhotoLibrary, um Bilder und Videos zu einem Benutzer zu speichern.iOS 9 Speichern gif to Fotobibliothek

Mit ReactiveCocoa, ein solcher Antrag würde wie folgt aussehen:

func saveImageAsAsset(url: NSURL) -> SignalProducer<String, NSError> { 
    return SignalProducer { observer, disposable in 
     var imageIdentifier: String? 
     PHPhotoLibrary.sharedPhotoLibrary().performChanges({ 
      let changeRequest = PHAssetChangeRequest.creationRequestForAssetFromImageAtFileURL(url) 
      let placeholder = changeRequest?.placeholderForCreatedAsset 
      imageIdentifier = placeholder?.localIdentifier 
     }, completionHandler: { success, error in 
      if let identifier = imageIdentifier where success { 
       observer.sendNext(identifier) 
      } else if let error = error { 
       observer.sendFailed(error) 
       return 
      } 
      observer.sendCompleted() 
     }) 
    } 
} 

ich ein gif aus einem Video mit Regift erstellt und ich kann bestätigen, dass die gif in meinem temporären Verzeichnis vorhanden ist. Aber wenn ich das gif in die Kamera rolle, bekomme ich einen mysteriösen Fehler: NSCocoaErrorDomain -1 (null), was wirklich super hilfreich ist.

Hat jemand dieses Problem jemals erlebt?

+0

Haben Sie genau das gleiche Problem und kann keine Lösung finden, es hat etwas damit zu tun, dass das Dateiformat nicht unterstützt wird. – NewShelbyWoo

Antwort

0

Sie können dies versuchen.

let data = try? Data(contentsOf: /*Your-File-URL-Path*/) 
PHPhotoLibrary.shared().performChanges({ 
    PHAssetCreationRequest.forAsset().addResource(with: .photo, data: data!, options: nil) 
}) 
+0

Willkommen bei SO! Während dieser Code das Problem in der Frage lösen kann, können wir diese Antwort verbessern, indem wir eine kurze Erklärung hinzufügen, die beschreibt, warum dieser Code funktioniert. –