Как быстро переместить indexpath.item в следующую индексную ячейку

#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. Как я могу это исправить?