Ограничить результат выборки PHAsset только 3 активами
Мне нужно получить три фотографии, отсортированные по дате съемки, последняя из которых была сделана последней. В настоящее время я делаю это, выбирая все активы с фотографиями, а затем выбирая ресурсы по соответствующим индексам (0, 1, 2). Хотя это работает, мне любопытно, есть ли более эффективный способ сделать это, когда меня интересуют только первые три. Документы объясняют, что выборка не возвращает все данные изображения - только метаданные, но мне все еще не нужно получать все метаданные. Есть ли PHFetchOption
Я мог бы использовать, чтобы ограничить выборку, или NSPredicate
или об этом не стоит беспокоиться?
var assetsFetchResults = PHAsset.fetchAssetsWithMediaType(.Image, options: nil)
let imageManager = PHCachingImageManager()
if assetsFetchResults?.count > 0 {
var asset = assetsFetchResults?[0] as? PHAsset
imageManager.requestImageForAsset(asset, targetSize: targetSize, contentMode: .AspectFill, options: nil, resultHandler: ...)
}
//repeat for index 1 and 2
1 ответ
Поэтому с iOS 9 вы можете установить настройку PHFetchOptions, чтобы ограничить, сколько вы выбираете. Например:
let fetchOptions = PHFetchOptions()
if #available(iOS 9.0, *) {
fetchOptions.fetchLimit = 3
} else {
// Fallback on earlier versions
}
Однако я также ищу способ сделать это на устройствах с iOS 8, так как нам все еще нужно поддерживать iOS 8 и 9 на данный момент.