Здесь я использую фрагмент из примера кода 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».
mediaType
(имеет смысл, они могут содержать несколько типов): stackoverflow.com/q/35590640 Вы не показываете, как вы применяете предикат, но я думаю, вам придется фильтровать коллекции каким-то другим способом. - person Rhythmic Fistman   schedule 05.09.2016numberOfItemsInSection
на тот момент? Я думаю, что вы должны фильтровать до этого. - person Rhythmic Fistman   schedule 06.09.2016