2017-02-26 1 views
-1

Plese refer to this picComment charger des images et des vidéos dans la même UICollectionView dans iOS

Je suis en train d'avoir une vue de collection qui peut montrer toutes les images et vidéos de rouleau appareil photo en fonction horodatage.

Je ne peux charger que des images ou seulement des vidéos, pas les deux.

j'ai essayé ci-dessous le code

 var photos: PHFetchResult<PHAsset>! // user photos array in collectionView for disaplying video thumnail 
     func getAssetFromPhoto() { 
      let options = PHFetchOptions() 
      options.sortDescriptors = [ NSSortDescriptor(key: "creationDate", ascending: true) ] 
      options.predicate = NSPredicate(format: "mediaType = %d", PHAssetMediaType.video.rawValue) 
      photos = PHAsset.fetchAssets(with: options) 
      print(photos) 
      photoCollectionView.reloadData() // reload your collectionView 
     } 

Comme vous pouvez le voir dans le code ci-dessus snipped, lors de la définition des options que nous ne pouvons demander collection vidéo ou collection d'images.

Comment puis-je combiner les deux. S'il vous plaît noter: je suis ouvert à toute sorte de suggestion de développement et comme une solution de contournement, je combine à PHFetchResult dans une collection et de remplir ma vue de collection.

Est-ce le seul moyen? ou Apple fournit-il une API pour la même chose.

Répondre

1

Avez-vous essayé de créer et de prédicat?

let videoPredicate = NSPredicate(format: "mediaType = %d", PHAssetMediaType.video.rawValue) 
let imagePredicate = NSPredicate(format: "mediaType = %d", PHAssetMediaType.image.rawValue) 
let predicate = NSCompoundPredicate(andPredicateWithSubPredicates: [videoPredicate, imagePredicate]) 

options.predicate = predicate 

Ou même de ne pas fournir de prédicat du tout. Un prédicat est utilisé pour filtrer les résultats. Si vous ne souhaitez pas filtrer les résultats, n'utilisez pas de prédicat.

+0

J'essaie votre solution de bons conseils, ne m'a pas traversé l'esprit! reviendra à voter –

+0

Vous voulez probablement un prédicat OR, car (type == Image AND type == Movie) est garanti être l'ensemble vide, c'est-à-dire zéro élément. Essayez: 'NSCompoundPredicate (ouPredicateWithSubpredicates: [videoPredicate, imagePredicate])'. – prewett