2017-02-26 128 views
-1

Plese refer to this pic如何加载在同一UICollectionView图像和视频iOS中

我想有一个集合视图可以显示基于时间戳相机胶卷的所有图片和视频。

我能够只加载图像或只加载不是两个视频。

我曾尝试下面的代码

 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 
     } 

正如你可以看到剪断在上面的代码中,定义选项,我们可以只要求视频采集或图像采集时。

我该如何将它们结合起来。 请注意:我打开任何种类的开发建议,作为一种解决方法,我将PHFetchResult合并到一个集合中,并填充我的集合视图。

这是唯一的方法吗?还是Apple提供相同的API?

回答

1

您是否尝试过创建和AND谓词?

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 

甚至根本不提供谓词。谓词用于过滤结果。如果您不想过滤结果,则不要使用谓词。

+0

我想你的解决方案很好的建议,没有跨过我的脑海!将返回到投票 –

+0

您可能需要一个OR谓词,因为(type == Image AND type == Movie)保证为空集,即零个项目。试试:'NSCompoundPredicate(orPredicateWithSubpredicates:[videoPredicate,imagePredicate])'。 – prewett

相关问题