Я пытаюсь отобразить все фотографии пользователя, сгруппированные по дате на UICollectionView
с PhotoKit .
Но следующий метод, который я сделал, имеет проблему, заключающуюся в том, что для устройства требуется больше времени, когда на устройстве больше изображений.
Мой метод
//1. Get `PHFetchResult`
let allPhotosOptions = PHFetchOptions()
allPhotosOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)]
let fetchResult = PHAsset.fetchAssets(with: PHAssetMediaType.image, options: allPhotosOptions)
// 2. Get all `PHAsset`
var assets: [PHAsset] = []
fetchResult.enumerateObjects { (asset, _, _) in
assets.append(asset)
}
// 3. Group by date
var assetGroupDictionary: [String: AssetGroup] = [:]
for asset in assets {
let dateKey = asset.creationDate.creationDateKey // "2019.10.19"
if assetGroupDictionary[dateKey] != nil {
assetGroupDictionary[dateKey]?.assets.append(asset)
} else {
assetGroupDictionary[dateKey] = AssetGroup(title: dateKey, assets: [asset])
}
}
assetGroups = assetGroupDictionary.map { $0.value }
assetGroups.sort { $0.title > $1.title }
Я предполагаю, что сгруппированный список PHAsset
может быть связан с PHCollectionList
. Но я не смог найти правильного решения.
Есть ли хороший способ получить список PHAsset
, сгруппированный по дате?