2016-04-09 17 views
3

Bir UIImage'ı kamera rulosuna kaydetmeye çalışıyorum. Apple, UIImageWriteToSavedPhotosAlbum'u kullanımdan kaldırmıştır, bu yüzden PhotoLibrary'u kullanmaya zorlayan (ALAssets için de geçerlidir) kullanıyorum. Bir UIImage kameranın kaydedilmemesi PHPhotoLibrary

Bu

kullanıyorum kodudur:

tanımı:

var rollCollection : PHAssetCollection!; 

Başlatma:

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); 
     }); 
    } 

her zaman: Resmi kaydetmek için

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

Kodu Ben tr Bir görüntüyü kaydetmek için ying aşağıdaki hatayı alıyorum:

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

Herhangi bir fikir? Herhangi bir açıklama bulamadım ve aradığım her yerde, benimkiyle benzer bir kod parçacığı bulduğum (Apple'ın belgeleri de dahil olmak üzere: https://developer.apple.com/library/ios/documentation/Photos/Reference/PHPhotoLibrary_Class/)

Teşekkürler.

cevap

3

Birkaç saat boyunca aynı şeyi aradıktan sonra bu soruyu yeni buldum.

Benim için işe yarayan bir cevabı bulabildim, bu yüzden bir başkasının gelecekte benzer bir şey aramaya gelmesi durumunda burada paylaşıyorum.

// 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... 

}) 

Kontrol dışarı bu cevabı özel albümlere görüntüleri kaydetmek ve özel bir albümden görüntü sorgulamak için nasıl bir örnek istiyorum. Save images with PHImageManager