【发布时间】:2017-01-10 19:03:48
【问题描述】:
我在这里使用了 Apple 示例代码中的一部分:
override func awakeFromNib() {
// Create a PHFetchResult object for each section in the table view.
let allPhotosOptions = PHFetchOptions()
allPhotosOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)]
let allPhotos = PHAsset.fetchAssetsWithOptions(allPhotosOptions)
let smartAlbums = PHAssetCollection.fetchAssetCollectionsWithType(.SmartAlbum, subtype: .AlbumRegular, options: nil)
let topLevelUserCollections = PHCollectionList.fetchTopLevelUserCollectionsWithOptions(nil)
// Store the PHFetchResult objects and localized titles for each section.
self.sectionFetchResults = [allPhotos, smartAlbums, topLevelUserCollections]
self.sectionLocalizedTitles = ["", NSLocalizedString("Smart Albums", comment: ""), NSLocalizedString("Albums", comment: "")]
PHPhotoLibrary.sharedPhotoLibrary().registerChangeObserver(self)
}
这会成功列出所有专辑。
我需要什么:
我想只列出带照片的相册,排除视频。此外,将视频排除在相册中,例如在“所有照片”中。
我尝试了什么:
let fetchOptions = PHFetchOptions()
fetchOptions.predicate = NSPredicate(format: "mediaType = %d", PHAssetMediaType.Image.rawValue)
这会导致崩溃说“获取选项中不受支持的谓词:mediaType == 1”
【问题讨论】:
-
这个问题提到资产集合没有
mediaTypes(有道理,它们可以包含多种类型):stackoverflow.com/q/35590640你没有展示你如何应用谓词,但我猜您必须以其他方式过滤集合。 -
@RhythmicFistman 到目前为止,我相信 cellForItemAtIndexPath 是我必须检查和过滤的地方。
-
是不是太晚了?你当时还没有告诉集合视图
numberOfItemsInSection中不需要的非图像吗?我认为你应该在那之前过滤。 -
这是真的!所以这行不通..
标签: ios swift phasset phfetchoptions phassetcollection