#swift #uicollectionview #uicollectionviewcell
#swift #uicollectionview #uicollectionviewcell
Вопрос:
Я хочу поместить все мои фотоальбомы с индексом 0 в ячейку UICollectionViewCell и после другого пользовательского альбома (индекс от 1) в ячейку индекса, но я не знаю, как это сделать. Ниже приведен код, который я написал. Пожалуйста, помогите мне.
extension CollectionViewController : UICollectionViewDataSource {
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
userCollections = PHAssetCollection.fetchAssetCollections( with: .smartAlbum, subtype: .albumRegular, options: nil)
let numOfItem = userCollections.count
return numOfItem 1
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CollectionViewCell", for: indexPath) as? CollectionViewCell else { return UICollectionViewCell()}
var coverAsset: PHAsset?
let collection = userCollections[indexPath.row]
let fetchOptions = PHFetchOptions()
fetchOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: true)]
if indexPath.item == 0 {
fetchReuslt = PHAsset.fetchAssets(with: fetchOptions)
coverAsset = fetchReuslt.firstObject
if let asset = coverAsset {
imgManger.requestImage(for: asset , targetSize: CGSize(width: cell.bounds.width , height: cell.bounds.height - 100), contentMode: .aspectFill, options: nil, resultHandler: { img, _ in
cell.collectionListCoverImg.image = img
})
}
cell.update(title: "All Photos", count: fetchReuslt.count)
} else {
let fetchedAssets = PHAsset.fetchAssets(in: collection, options: fetchOptions)
coverAsset = fetchedAssets.firstObject
if let asset = coverAsset {
imgManger.requestImage(for: asset , targetSize: CGSize(width: cell.bounds.width , height: cell.bounds.height - 50), contentMode: .aspectFill, options: nil, resultHandler: { img, _ in
cell.collectionListCoverImg.image = img
})
}
cell.update(title: collection.localizedTitle, count: fetchedAssets.count)
}
return cell
}
Комментарии:
1. какую ошибку вы получаете? Что вы имеете в виду «я хочу поместить все мои фотоальбомы с индексом 0 в ячейку CollectionView»?
2. это ошибка потока 1: «0x6000039f2200: индекс (3) выходит за пределы (3)»
3. вы не должны возвращаться
numOfItem 1
, он всегда будет вне индекса.4. Я хотел бы создать папку, содержащую все файлы активов с именем AllAlbum. Я хочу поместить его в то место, где значение индекса ячейки равно 0, но если я напишу тот же код, что и выше, он получит доступ к альбому, соответствующему значению индекса 0 userCollecition. Количество пользовательских коллекций равно 3. Поэтому я возвращаю numOfItem 1. Как я могу это исправить?